Ubuntu14.04 LTS下 <<UNIX环境高级编程>>源代码下载编译步骤
来源:互联网 发布:腾讯软件管家mac版 编辑:程序博客网 时间:2024/06/07 00:22
这篇文章是我在系统中编译源代码时遇到的问题的一个总结。
首先,需要下载源代码,地址为http://www.apuebook.com/。大致浏览了下,可以下载源码和查看每个版本都修改了哪些bug,上面记载了有些将要在第五版中修复的bug。开始以为国内的网无法访问此网站,后来一点,上去了。
下面就开始了编译的阶段。
将源代码下载后解压,我解压的路径为/home/eric/apuesrc/apue.2e下面,用终端定位至此,首先阅读下源码中的readme文件,在我看来有价值的信息仅是把工作目录改为自己的解压目录,然后执行make命令。如下遇到的问题皆在互联网中找到了解决方案,在此我只是做一个总结而已。
1.无法找到apue.h文件。
这个文件位于apue.2e/include下,但执行make的时候就是找不到,于是网上的解决方案是将apue.h文件拷贝到/usr/include/下即可。
2.In file included from printd.c:6:0: ipp.h:122:17: error: expected ‘:’, ‘,’, ‘;’, ‘}’ or ‘__attribute__’ before ‘.’ token
这个错误在网上搜到的是提示timex.h这个文件报错,我的系统没有报timex.h出错,但我到系统的/usr/inclue下找确实有这个文件而且其中也确实定义了
int status; /* clock command/status */
于是猜测是同一个问题,即宏定义冲突的问题。
解决方案是把apue.2e/ipp/ipp.h中宏定义status改名,比如Status,然后执行make,系统会提示status找不到了,定位到apue.2e/ipp/printd.c中第977行:
i = ntohs(hp->status);
将status改为Status即可。
3.再次编译仍然失败。
这次出现的问题是:
getenv1.c:4:20: error: ‘ARG_MAX’ undeclared here (not in a function)
解决方案是:
在apue.2e/include/apue.h中添加一行:
#define ARG_MAX 4096
打开apue.2e/threadctl/getenv1.c 和apue.2e/threadctl/getenv3.c,添加一行:
#include "apue.h"。
到此基本完成,但还需改动两步:
1.把先前拷贝到/usr/include/目录下的apue.h中也要添加一句#define ARG_MAX 4096(系统每次编译好像找的是系统中.h文件??????)
这时再执行make命令,编译通过。
2.将编译生成的/apue.2e/lib/libapue.a的文件拷贝到/usr/lib/下,这个在今后编译执行书中例程时会需要。
~
编译运行程序
gcc 源程序.c -o 可执行程序名 -lapue
注意 :若-lapue 写在了源程序的前面会出现错误 eg. gcc ls1.c -o ls1 -lapue
因为
.a在链接的时候,必须放在文件之后
.so在链接的时候,对位置没有要求,前后都可以
- Ubuntu14.04 LTS下 <<UNIX环境高级编程>>源代码下载编译步骤
- 《UNIX环境高级编程》apue源代码Ubuntu下的编译
- 《UNIX环境高级编程》apue源代码Ubuntu下的编译
- 《UNIX环境高级编程》apue源代码Ubuntu下的编译
- 《unix环境高级编程》书中源代码编译问题解决
- 《unix环境高级编程》书中源代码编译问题解决
- 《unix环境高级编程》书中源代码编译问题解决
- 《unix环境高级编程》书中源代码编译 详细流程
- unix环境高级编程第三版源代码编译及使用
- unix环境高级编程第三版源代码编译及使用
- unix环境高级编程源代码在ubuntu下运行
- Unix环境高级编程 源代码地址
- unix环境高级编程中的源代码使用说明
- UNIX环境高级编程源代码配置
- UNIX环境高级编程源代码配置
- 在Ubuntu10.04 下编译《UNIX环境高级编程》(第二版)源码
- 《unix环境高级编程》源代码编译找不到apue.h等错误的解决办法
- 《unix环境高级编程》源代码编译找不到apue.h等错误的解决办法
- object-c @class的用法
- 师傅史蒂夫史蒂夫史蒂夫个梵蒂冈的法国队
- jsp不限层次继承页面----rapid
- 多线程爬虫遇到问题求大神指教
- java多线程爬虫遇到问题求大神指教
- Ubuntu14.04 LTS下 <<UNIX环境高级编程>>源代码下载编译步骤
- Tomcat启动内存设置
- Codeforces 479D Long Jumps(贪心+二分)
- 正则表达式小结
- shell怎么读取网页内容
- linux,我要学习linux常用命令
- oracle vm 宕机不能自动漂移,请教
- oracle归档日志定时清除?谁做过啊,请教
- 将mysql中数据导进到execel表xc8147