解决《UNIX环境高级编程》(APUE)示例代码的编译问题
2013-09-24 11:41
477 查看
转自 http://cunsheng.sinaapp.com/?p=360
APUE中示例很多, 把这些源码拿来跑跑调调对学习理解有着莫大的帮助, 随书网站就提供了源码下载, 不过我自己在Linux和Mac OS X编译时都遇到了一些小问题, 以下是解决方法和其他一些提示, 希望能对其他人有用
下载了源代码后, 正常情况下两步操作就可以完成编译
根据你的操作系统选择对应的Make.defines.*文件, 例如你使用的是Linux, 那么就选择Make.defines.linux, 打开并修改其中的第6行, 将WKDIR的值设为解压出的源码文件夹的绝对路径
make
编译时可能会出现不少warning, 但只要能一直执行到最后就算是成功, 可以echo $?看看, 如果输出0就表示成功
提示nawk不存在, 关于nawk与awk的异同可见这里, 解决这个问题可以简单的用awk替代nawk来解决, 可以挑PATH中的任一可寻路径(例如~/bin) ln -s建立个nawk的软链到awk, 然后一定记得make clean后再make, 否则你会遇到下面的这个问题
造成这个问题的原因, 从表面看是”CMSG_LEN”宏缺少了对OS X的定义, 但我猜测可能这背后还有故事, 这里就不细究了, 解决方法也很简单, 打开include/apue.h, 在第8行往后插入以下两行代码后再make clean; make即可
打开你的操作系统对应的Make.defines.*文件, 在第7行的加上-g选项就OK了
最后提醒下, 源码的章节编号是按照英文版来的, 例如我的APUE第二版第4页的程序清单1-1, 理应对应的源码是fig1.1, 但实际却是fig1.3, 找代码时要人脑offset一下才是
最最后, 感谢已故的Richard Stevens大神留下的这一系列好书
APUE中示例很多, 把这些源码拿来跑跑调调对学习理解有着莫大的帮助, 随书网站就提供了源码下载, 不过我自己在Linux和Mac OS X编译时都遇到了一些小问题, 以下是解决方法和其他一些提示, 希望能对其他人有用
下载了源代码后, 正常情况下两步操作就可以完成编译
根据你的操作系统选择对应的Make.defines.*文件, 例如你使用的是Linux, 那么就选择Make.defines.linux, 打开并修改其中的第6行, 将WKDIR的值设为解压出的源码文件夹的绝对路径
make
编译时可能会出现不少warning, 但只要能一直执行到最后就算是成功, 可以echo $?看看, 如果输出0就表示成功
Linux下的编译问题
我的Linux发行版是CentOS release 5.4 (Final), make时报如下错误OS X下的编译问题
我的版本是10.8.1, Xcode版本是4.4.1, make时报如下错误关于GDB
在实践APUE示例源码时用gdb配合当然是最好不过了, 不过你需要在cc时加上-g选项才能输出gdb调试时所需的symbols打开你的操作系统对应的Make.defines.*文件, 在第7行的加上-g选项就OK了
最后提醒下, 源码的章节编号是按照英文版来的, 例如我的APUE第二版第4页的程序清单1-1, 理应对应的源码是fig1.1, 但实际却是fig1.3, 找代码时要人脑offset一下才是
最最后, 感谢已故的Richard Stevens大神留下的这一系列好书
相关文章推荐
- 《unix环境高级编程》源代码编译找不到apue.h等错误的解决办法
- 《unix环境高级编程》源代码编译找不到apue.h等错误的解决办法
- 《unix环境高级编程》书中源代码编译问题解决
- 《unix环境高级编程》源代码编译找不到apue.h等错误的解决办法
- APUE 《UNIX环境高级编程》编译问题彻底解决方案
- 《unix环境高级编程》源代码编译找不到apue.h等错误的解决办法
- 《unix环境高级编程》书中源代码编译问题解决
- 《unix环境高级编程》书中源代码编译问题解决
- Xcode编译策略之代码逻辑顺序不正确,变量不显示问题解决方案
- C语言解决螺旋矩阵算法问题的代码示例
- 使用JSONP解决跨域问题-代码示例
- hiredis示例代码example-ac.c的编译出现缺少ae的解决方法总结
- 《UNIX环境高级编程》编译问题彻底解决方案
- 解决webstorm 下编写vue代码,保存后不自动打包编译的问题
- Xcode 5 中引入 C++ 模板代码无法编译通过的问题解决
- 《UNIX环境高级编程》示例代码中apue.h头文件的配置
- VS2008修改部分代码总重新编译整个工程或解决方案的问题解决
- 使用JSONP解决跨域问题-代码示例
- centos7中编译《UNIX环境高级编程》时遇到的问题及解决方法
- Linux - Unix环境高级编程(第三版) 源代码编译(即头文件apue.h如何使用问题)