apue源代码 unp源代码 以及编译方法
apue源代码 unp源代码 以及编译方法
1.apue源代码地址:h-ttp://download.csdn-.n-et/detail/s393102639/3697248
说明:解压源码之后先不要直接make,看看readme。下面以我的系统为例说明一下:
C/C++ code?123 sss@sss-desktop:~/apue.2e$ uname -a Linux sss-desktop 2.6.32-33-generic #72-Ubuntu SMP Fri Jul 29 21:08:37 UTC 2011 i686 GNU/Linux
C/C++ code?12345 To build the source, edit the Make.defines.* file for your system and set WKDIR to the pathname of the tree containing the source code. 我的系统是linux 所有我需要打开Make.defines.linux文件把#WKDIR=/home/sar/apue.2e改为 WKDIR=/home/sss/apue.2e (这是我放代码的位置)
现在可以make了,但是会发现当make到threadctl目录的时候会报错
C/C++ code?123456 sss@sss-desktop:~/apue.2e/threadctl$ make gcc -DLINUX -ansi -I/home/sssz/apue.2e/include -Wall -D_GNU_SOURCE -c -o detach.o detach.c gcc -DLINUX -ansi -I/home/sss/apue.2e/include -Wall -D_GNU_SOURCE -c -o getenv1.o getenv1.c getenv1.c:4: error: ‘ARG_MAX’ undeclared here (not in a function) make: *** [getenv1.o] 错误 1
这是因为包含的头文件limits.h没有ARG_MAX,vi打开该文件/usr/include/limits.h 添加一行代码 (需要root权限)
C/C++ code?12 #define ARG_MAX 4096
这行代码最好添加在文件的靠近开头的部分,我添加的位置是第36行
现在在make应该不会出错了
最后,如果要单独make一个文件夹的文件 可以执行make -f linux.mk(这里选自己操作系统对应的)
C/C++ code?123456789101112 sss@sss-desktop:~/apue.2e/threadctl$ make -f linux.mk gcc -DLINUX -ansi -I/home/sss/apue.2e/include -Wall -D_GNU_SOURCE -c -o getenv1.o getenv1.c gcc -DLINUX -ansi -I/home/sss/apue.2e/include -Wall -D_GNU_SOURCE -c -o getenv2.o getenv2.c gcc -DLINUX -ansi -I/home/sss/apue.2e/include -Wall -D_GNU_SOURCE -c -o getenv3.o getenv3.c gcc -DLINUX -ansi -I/home/sss/apue.2e/include -Wall -D_GNU_SOURCE -L../lib atfork.c ../lib/libapue.a -pthread -o atfork gcc -DLINUX -ansi -I/home/sss/apue.2e/include -Wall -D_GNU_SOURCE -c -o timeout.o timeout.c timeout.c: In function ‘main’: timeout.c:93: warning: ‘condition’ is used uninitialized in this function timeout.c:95: warning: ‘arg’ may be used uninitialized in this function gcc -DLINUX -ansi -I/home/sss/apue.2e/include -Wall -D_GNU_SOURCE timeout.o detach.o ../lib/libapue.a -pthread -o timeout gcc -DLINUX -ansi -I/home/sss/apue.2e/include -Wall -D_GNU_SOURCE -L../lib suspend.c ../lib/libapue.a -pthread -o suspend
2.unp源代码地址:ht-tp://download.csdn.-n-et/detail/s393102639/3697263
说明:解压源码之后先不要直接make,看看readme。下面以我的系统为例说明一下:
1. 执行
C/C++ code?12 ./configure
2.分辨进入到lib和libfree目录执行make(这两个是必须的),如果你的系统是4.4BSD就进入到libroute目录make,如果是XTI就进入到libxti目录make,因为我的系统在linux所以这两个都不需要去make
3.进入intro目录执行make daytimetcpcli 如果能执行成功说明没有问题了(其实其他目录我还没有试过)
每个目录都可以单独进入然后make