免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1879 | 回复: 2
打印 上一主题 下一主题

[系统安装] linux下APUE2源码编译方法 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-05-27 09:28 |只看该作者 |倒序浏览
这几天正在学APUE2,为源代码编译的事郁闷的半天(菜鸟的临床表现),在网络和各位大牛的分享下,最终知道如何编译这些小程序了

本人的linux版本是fedora 10
在命令行下执行  uname -r
其结果:   2.6.27.5-117.fc10.i686


第一步:拷贝源代码src.tar.gz 到 linux系统中。
    源代码的下载地址为:http://www.apuebook.com/src.tar.gz
      我的linux系统没有连接网络,我使用了最愚笨的方法,现在Windows上下载文件stc.tar.gz,然后再使用U盘拷贝到一台只装有linux系统的电脑上。将源代码 放在/test/package/下。在命令行下:  # cd  /test/package
                                                  # tar xvf  src.tar.gz
       将会出现 apue.2e 这样一个文件夹


第二步:修改Make.defines.linux,修改相关文件,执行make命令
      1)  用vim 编辑器编辑此文件, #vim  Make.defines.linux 然后按“i”键是文件进入编辑状态。修改WKDIR=/root/apue.2e为 WKDIR=/test/package/apue.2e   如果你将文件apue.2e 解压在/root下,则将工作目录改为为WKDIR=/root/apue.2e

      2)修改/test/package/apue.2e/std/linux.mk把全部的nawk改为awk。因为在linux中没有nawk 这个命令。

    3)修改脚本文件systype.sh的权限。由于原始的systype.sh文件不具有可执行的权限。通过执行命令:
#chmod +x systype.sh  给当前用户及其所在组和其他组添加可执行权限;或者#chmod u+x systype.sh 仅给当前用户添加可执行权限。

    4)然后回到apue.2e的目录下,再直接执行make命令。 #cd  /test/package/apue.2e      # make     只要make的过程不出现error,就会顺利的生成可执行文件。我的在编译过程中没有出现error,因此意味着编译成功。


第三步:编译单独的源文件
      1)make成功编译后,会在/test/package/apue.2e/lib/下生成库文件libapue.a,主要是将apue.h(位于WKDIR/include/)中定义的所有内容生成一个静态的库,这样可以方便调用。我们以WKDIR/下的fig1.3(实现ls部分功能)文件为例说明需要修改的地方。将fig1.3文件重命名为fig1.3.c,然后编辑该文件,将包含头文件的一行代码:
即头文件apue.h的位置为当前路径下inlucde文件夹中,这个就正确的指定了apue.h的位置。

    2)该脚本文件的apue编程的例子都有关include "apue.h"的代码,其实apue.h并不是系统自带的,它是作者编写的头文件,源代码在附录B中.因此一个方法是.把刚才生成的 /test/package/apue.2e/include/apue.h直接复制到/usr/include下,  即在命令行下执 cp  /test/package/apue.2e/include/apue.h  /usr/include
一些标准库(如stdio.h)都在/usr/include文件下。因此 apue.h 就能像stdio.h 那方便使用了。还有一个方法就是将你要编译的程序中“#include"apue.h"”改为“#include<include/apue.h>”,也能达到相同的效果。

    3) 执行#gcc fig1.3.c  lib/libapue.a   则会生成可执行文件a.out。执行命令
#./a.out /home
则列出我的/home路径下的所有文件和文件夹:
   .
   c_programming
    lost+found
    package
    ..
    scripts
    shut.sh

论坛徽章:
0
2 [报告]
发表于 2012-05-27 09:28 |只看该作者
自己顶一个

论坛徽章:
0
3 [报告]
发表于 2012-09-15 23:35 |只看该作者
哥们你这,即头文件apue.h的位置为当前路径下inlucde文件夹中,这个就正确的指定了apue.h的位置。这句话,我试了一下,编译总是路径错误,怎么搞的啊?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP