- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
UNIX环境高级编程》(apue2)源码编译出错的处理方法
linux下《UNIX环境高级编程》(apue2)源码编译出错的处理方法文章出处:/course/3_program/c++/cppjs/2008617/126036.html
?
相信很多跟我一样想要学习unix编程的朋友在兴冲冲拿到《unix环境高级编程》后,准备拿源码练练手时,执行第一个myls就出现一大堆的错误,这未免时个不小的打击。今天把解决方法写下来,第一自己有个记录,第二也帮助那些被同样问题困扰的朋友尽快的进入linux美丽的世界。(只限linux系统)
首先需要make一次源代码
编辑源码解压生成的apue.2e文件夹下的Make.defines.linux
修改WKDIR=/home/var/apue.2e为你的apue.2e目录,比如我的apue源码解压在/usr/local,那我就改为:
WKDIR=/usr/local/apue.2e
然后进入apue.2e/std 目录,编辑linux.mk。修改里面所有的nawk为awk。
最后返回apue.2e目录,执行make命令。在我的机器上编译时,提示ARG_MAX未定义,可以这么修改。在apue.2e/include/apue.h中添加一行:#define ARG_MAX 4096打开apue.2e/threadtl/getenv1.c 和apue.2e/threadctl/getenv3.c,添加一行:#include apue.h把头文件apue.h放到/usr/include/中,
cp ~/apue.2e/include/apue.h /usr/include
复制代码
改源码包中的Make.defines.linux,make一下就在源码目录/lib中生成了libapue.a共享库了,将它放到/usr/lib中,这样就可以方便调用了。
cp ~/apue.2e/lib/libapue.a /usr/lib
复制代码
编译一个例子看看:
gcc ls1.c -o ls1 -lapue
复制代码
搞定!以下是编译源码时的错误提示跟解决方法(假定你的工作目录跟我的一样,为/usr/local/apue.2e)
错误提示1:
myls.c:1:19: apue.h: No such file or directorymyls.c: In function `main:myls.c:13: error: `NULL undeclared (first use in this function)myls.c:13: error: (Each undeclared identifier is reported only oncemyls.c:13: error: for each function it appears in.)
解决办法:
拷贝apue.h到系统默认头文件目录中
$cp /usr/local/apue.2e/include/apue.h /usr/include
错误提示2:
/tmp/ccBBopm0.o(.text+0x2b): In function `main:: undefined reference to `err_quit/tmp/ccBBopm0.o(.text+0x5f): In function `main:: undefined reference to `err_syscollect2: ld returned 1 exit status
解决办法:
err_quit跟err_sys是作者自己定义的错误处理函数,需要单独定义头文件
在/usr/include 下新建一个名为myerr.h的文件,拷贝在原书的附录B中头文件到其中。
?
?
《UNIX环境高级编程》源码编译方法
这里要谈到的一个问题就是该书中的源代码编译的问题。此书中差不多每个历程中,都会有这样一行源码:#include ourhdr.h?? 在第二版中改为:#include apue.h??? 这个头文件是作者把把每个例程中常用的标准头文件,一些常用的出错处理函数(err_**()之类的函数)和一些常用的宏定义给整理在一个头文件中。这个可以省去在每个例程中录入较多的重复代码,这样可以减少每个例程的长度。但是,这样就给读者带来了不少麻烦。因为我们还要去搞明白如和把这个头文件编译,然后做成库文件,添加到我们的系统中。特别读于初学者,本来满怀信心的,结果在编译第一个程序的时候就出现了问题。我也没有搞明白如何把 ourhdr.h静态的编译到系统中。??? 不过,不明白如何使用ourhdr.h这个头文件,并不会影响我们学习APUE,也不会影响我们编译和运行每一个例程。其实,简单的想一下,如果一个 C程序要能顺利
您可能关注的文档
- NCE第2册词汇总汇.doc
- my古代中国——经济.ppt
- m全球构造理论三级跳20091125-7.ppt
- NEC电子电机控制ASSP芯片MMC-1说明.pdf
- NE555制作的单键双稳电子开关.doc
- NeuroSky BCI技术.pdf
- NFM盾构机常见故障.doc
- NHCE第一,二册单词测试(100个).doc
- NEData_12-3_3-峨嵋局.ppt
- NI Elvis 实验平台使用帮助.doc
- 福莱特玻璃集团股份有限公司海外监管公告 - 福莱特玻璃集团股份有限公司2024年度环境、社会及管治报告.pdf
- 广哈通信:2024年度环境、社会及治理(ESG)报告.pdf
- 招商证券股份有限公司招商证券2024年度环境、社会及管治报告.pdf
- 宏信建设发展有限公司2024 可持续发展暨环境、社会及管治(ESG)报告.pdf
- 品创控股有限公司环境、社会及管治报告 2024.pdf
- 中信建投证券股份有限公司2024可持续发展暨环境、社会及管治报告.pdf
- 洛阳栾川钼业集团股份有限公司环境、社会及管治报告.pdf
- 361度国际有限公司二零二四年环境、社会及管治报告.pdf
- 中国神华能源股份有限公司2024年度环境、社会及管治报告.pdf
- 广西能源:2024年环境、社会及治理(ESG)报告.pdf
文档评论(0)