Chinaunix首页 | 论坛 | 博客
  • 博客访问: 59588
  • 博文数量: 10
  • 博客积分: 234
  • 博客等级: 二等列兵
  • 技术积分: 75
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-26 21:07
个人简介

nothing important.

文章分类

全部博文(10)

文章存档

2012年(3)

2011年(7)

我的朋友

分类: LINUX

2011-02-26 21:13:47

1 获得源码
从apue的官方网站下载源码。()
2 WKDIR
编辑源码解压生成的apue.2e文件夹下的Make.defines.linux
修改WKDIR=/home/sar/apue.2e为你的apue.2e目录,
比如我的apue源码解压在主目录下,那我就改为:
WKDIR=/home/chen/apue.2e
3 nawk
然后进入apue.2e/std 目录,编辑linux.mk。修改里面所有的nawk为awk。
4 stropts.h
如果出现stropts.h找不到的情况,则下载glibc-2.11 (地址 ),解压缩
#cp ./glibc-2.11/streams/stropts.h /usr/include
#cp ./glibc-2.11/bits/stropts.h /usr/include/bits
#cp ./glibc-2.11/sysdeps/x86_64/bits/xtitypes.h /usr/include/bits
5 ARG_MAX
在我的机器上编译时,提示ARG_MAX未定义,可以这么修改。
在apue.2e/include/apue.h中添加一行:
#define ARG_MAX 4096
打开apue.2e/threadctl/getenv1.c 和apue.2e/threadctl/getenv3.c,添加一行:
#include "apue.h"

若要自己编译单个文件,则将 apue.h 和上述编译成功后生成的 libapue.a 静态库文件考到系统目录去
#cp ~/apue.2e/include/apue.h /usr/include
#cp ~/apue.2e/lib/libapue.a /usr/lib
举例编译第一个文件 ls1.c
  1. #include "apue.h"
  2. #include <dirent.h>

  3. int main(int argc, char *argv[])
  4. {
  5.     DIR *dp;
  6.     struct dirent *dirp;

  7.     if (argc != 2)
  8.         err_quit("usage: ls directory_name");

  9.     if ((dp = opendir(argv[1])) == NULL)
  10.         err_sys("can't open %s", argv[1]);
  11.     while ((dirp = readdir(dp)) != NULL)
  12.         printf("%s\n", dirp->d_name);

  13.     closedir(dp);
  14.     exit(0);
  15. }
链接apue的静态库即可:
$gcc -Wall ls1.c -lapue -o ls1

如果不拷贝 apue.h 和 libapue.a,则需要在编译命令中分别以 -I 和 -L 参数指定两个文件的位置(绝对相对均可),如:
$gcc -Wall ls1.c -I~/apue.2e/include -L~/apue.2e/lib -lapue -o ls1

另:libapue.a 这个静态库也可以自己编译生成。
$ar rs libapue.a ~/apue.2e/lib/*.o
或者:
$ar r libapue.a ~/apue.2e/lib/*.o
$ranlib libapue.a
阅读(2080) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:删除Wine的残留快捷方式

给主人留下些什么吧!~~