您的位置:首页 > 运维架构 > Linux

linux下APUE的代码测试文件路径配置

2015-09-01 21:04 519 查看
1.APUE的代码(http://www.apuebook.com./)解压,比如路径是/home/zqk/apue.2e
2.按照README修改Make.defines.linux 中的WKDIR,改为WKDIR=/home/sar/apue.2e
3.make 。make后在lib文件夹中生成libapue.a
4把apue.h放到要编译的源代码相同目录下(因为编译的代码 #include "apue.h",也可以复制到/usr/include下)

5把alibapue.a放到要编译的源代码相同目录下,否则在gcc 或者cc 代码时,会报如下错误
undefined reference to `err_quit'
undefined reference to `err_sys'
其实apue.h并不是系统自带的,而是作者编写的头文件,源代码在附录B中.因此也可把刚才生成的/root/apue.2e/include/apue.h直接复制到/usr/include下.

还有像err_sys、log_sys的函数也在附录B中.同样的方法是在/usr/include新建一个 my_err.h的文件,把程序清单 B.2. 输出至标准出错文件的出错处理函数和程序清单 B.3 用于守护进程的出错处理函数的内容复制进去.这样按例子编程就只需要在行首添加:#include
"my_err.h"就可以了

6. 使用gcc -o hello hello.c libapue.a来编译源代码,生成hello,执行./hello 即可
或者使用cc ls1.c libapue.a编译,生成a.out, 执行a.out即可。在编译的时候要加上库文件libapue.a,因为该文件实现了apue.h中的所有功能,主要有常用头文件,宏定义以及自定义函数的实现。
Linux环境下(以Ubuntu10.04为例)

在http://www.apuebook.com/下载src.tar.gz源代码的压缩包

1、解压至/home/user/目录下

2、修改 Make.defines.linux中的WKDIR=/home/xxx/apue.2e,改为

WKDIR=/home/user/apue.2e

3、返回至apue.2e目录下面,修改linux.mk,将里面的nawk全部改为awk,可以使用这个

命令 :%s/nawk/awk/g

可能你的该目录(子目录)下的多个linux.mk不用修改,那么直接跳过这步

4、make

若此步骤时出现错误: 如 getenv1.c:4: error: ‘ARG_MAX’ undeclared here

时,请:

编译apue.2e/include目录下的apue.h,添加

#define ARG_MAX 4096

一行,然后在 apue.2e/threadctl目录下的getenv1.c和getenv3.c文件中添加

#include "apue.h"

一行

至此,应该可以顺利编译.

5、将/home/user/apue.2e/include/apue.h和/home/user/apue.2e/lib/error.c复制到/usr/include目录下

cp /home/user/apue.2e/include/apue.h /home/user/apue.2e/lib/error.c /usr/include

6、cd 到目录apue.2e/lib下

ranlib libapue.a

然后拷贝这个.a文件到/usr/lib/apue目录下 (没有apue目录则新建一个)

cp /home/usr/apue.2e/lib/libapue.a /usr/lib/apue/

7、编译你的源文件,如 print_thread_id.c

gcc -o print_thread_id print_thread_id.c -lpthread -L /usr/lib/apue -lapue
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: