本文主要是介绍apue源码的编译与使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
二.apue源码的编译与使用
1. vim Make.defines.linux 修改变量WKDIR,指向你的apue源码的位置,我的是/home/hlouyuting/APUE/apue.2e,所以
WKDIR=/home/hlouyuting/APUE/apue.2e
2. vim std/linux.mk 将两个nawk改为gawk
3. vim include/apue.h 增加一个常量ARG_MAX,这是
threadctl/getenv1.c和threadctl/getenv3.c要用到的;4096这个值是参考里给的,如果有问题,自己修改吧。
#define ARG_MAX 4096
4. vim threadctl/getenv1.c 增加
#include "apue.h"
5. vim threadctl/getenv3.c 增加
#include "apue.h"
6. vim threads/badexit2.c 修改第31行,将pthread_self()的返回值转换为int类型。
printf("thread 2: ID is %d\n", (int)pthread_self());
7. 执行make 报错 catgetmsg.c:2:21: 致命错误:stropts.h:没有那个文件或目录编译中断。
解决方法:
·如果出现stropts.h找不到的情况,则下载glibc-2.11的源码包,解压缩
· 复制glibc-2.11/streams/stropts.h 到 /usr/include
· 复制glibc-2.11/bits/stropts.h 到 /usr/include /bits
· 复制glibc-2.11/sysdeps/x86_64/bits/xtitypes.h 到 /usr/include /bits
8. 再执行make 编译通过。
9. 复制静态库和头文件到系统的相应位置
cp include/apue.h /usr/include
cp lib/libapue.a /usr/lib
10. 编译:比如:(不能忘记了两个链接库)
gcc threadid.c -o threadid -lapue -lpthread
11. 查找源码对应位置:
#ll fig1.3
lrwxrwxrwx 1 sdoning sdoning 10 2010-11-27 07:27 fig1.3 -> file/ls1.c
这篇关于apue源码的编译与使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!