源码地址
作者书本网站下载
修改后地址 gitee地址:
https://gitee.com/dongposu/apue3e.git
编译环境
Ubuntu20.0 需要安装 gcc 和make
细节参考链接:这个博客讲的很详细了
https://blog.csdn.net/cxs5534/article/details/109324451
这里做部分解释:
问题一:关于apue.h文件
apue.h这个文件时时作者自己封装的头文件,包括里面有一些自己封装的c文件,如果需要单独运行书中代码片段,需要拷贝相关的文件,或者自己做个动态库
问题二:undefined reference to `major’
这里需要将 #include <sys/types.h> 添加再 apue.h文件中
问题二:error: ‘FILE’ {aka ‘struct _IO_FILE’} has no member named ‘_flag’; did you mean ‘_flags’?
修改文件:stdio/buf.c
_flag 替换成 _flags
_base 替换成 _IO_buf_end
_ptr 替换成 _IO_buf_base
问题三:/usr/bin/ld: 找不到 -lbsd
安装:sudo apt-get install libbsd-dev
问题四:如何执行示例代码
确保编译完成,没有error的情况后,接下来寻找书中的示例代码
书中图片示例的代码,为了方便查找,按照书本代码图片编号,创建了源码软连接都放在了 figlinks目录下,如书中示例代码 1.3对应fig1.3
这些文件与真正的源文件建立链接,如:fig1.3->../intro/ls1.c 。因为已经编译过,可以直接执行:./intro/ls1 /etc/