UNIX环境高级编程(第二版)/ APUE 源码编译与使用
为了用APUE的源码折腾了一下,网上很多方法都不能用,或者有小问题,特此记录。
注意,不同环境的编译提示有所不同,如果你的环境和我的相似,那么应该没问题。
环境
Linux mypad 2.6.38-ARCH #1 SMP PREEMPT Tue May 3 06:04:40 UTC 2011 i686 Intel(R) Core(TM)2 Duo CPU T6570 @ 2.10GHz GenuineIntel GNU/Linux
确保你已经安装了gcc和gawk。
步骤
到www.apuebook.com下载源码
tar解包,cd apue.2e
vi Make.defines.linux 修改变量WKDIR,指向你的apue源码的位置,我的是/home/huangz/code/apue.2e,所以 WKDIR=/home/huangz/code/apue.2e
vi include/apue.h 增加一个常量ARG_MAX,这是threadctl/getenv1.c和threadctl/getenv3.c要用到的;4096这个值是参考里给的,如果有问题,自己修改吧。
vi threadctl/getenv1.c 增加
vi threadctl/getenv3.c 增加
vi threads/badexit2.c 修改第31行,将pthread_self()的返回值转换为int类型。 printf(“thread 2: ID is %d\n”, (int)pthread_self());
vi std/linux.mk 将两个nawk改为gawk
make
sudo cp include/apue.h /usr/include sudo cp lib/libapue.a /usr/lib
好了,测试一下,记得要用-lapue命令让编译器链接apue库 gcc main.c -lapue