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
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
相关文章推荐
- Linux学习笔记之 RAID介绍,及centos6上软RAID的实现
- 每天一个linux命令---useradd
- linux socket服务器框架
- TQ2440 学习笔记—— 11、嵌入式编程基础知识【arm-linux-objcopy、objdump选项】
- Linux下UEFI模拟器编译和启动
- 为普通用户赋予sudo权限(Linux)
- linux下文件夹的创建、复制、剪切、重命名、清空和删除命令
- Linux命令学习篇0——原产地
- Linux下gbk-utf8文件和目录下所有文件转码
- CentOS6.6源码编译升级GCC至4.8.2
- linux常用命令(17):whereis命令
- linux常用命令(16):which命令
- Linux mysql 以及sql 语句的使用
- linux利用crontab 自动备份或删除的方法
- Centos6 安装zabbix-server
- Linux安装JDK
- linux常用命令(15):tail命令
- linux查询rpm包详细信息
- linux常用命令(14):head命令
- linux常用命令(13):less命令