网站大量收购独家精品文档,联系QQ:2885784924

UNIX环境高级编程》(apue2)源码编译出错的处理方法.doc

UNIX环境高级编程》(apue2)源码编译出错的处理方法.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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 directory myls.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 once myls.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_sys collect2: 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程序要能顺利

文档评论(0)

cgtk187 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档