linux下《UNIX环境高级编程》第2版 单个源码编译方法

 

作者提供的编译方法的实现

 README文件中给出的编译方法如下:

To build the source, edit the Make.defines.* file for your system and set WKDIR to the pathname of the tree containing the source code.  Then just run "make".  It should figure out the system type and build the source for that platform utomatically.

参照该方法,我将源码的编译分为三步。

第一步,编辑Make.defines.*文件。

由于我所使用的操作系统是linux-fedora,所以应该编辑文件Make.defines.linux。其实,编辑该文件的内容主要是修改其中的WKDIR,即我们源码所在文件夹的绝对路径名。原文件中WKDIR/home/sar/apue.2e,我们可以根据我们实际文件夹所在的位置进行相应的修改。我的apue.2e文件夹放在/home/ajaxhe/Dropbox/UNIX/apue.2e下,所以我将WKDIR修改为WKDIR/home/ajaxhe/Dropbox/UNIX/apue.2e。其余内容不用修改,保存修改后的文件。

第二步,通过su命令切换到超级用户。修改脚本文件systype.sh的权限。

由于原始的systype.sh文件不具有可执行的权限。通过执行命令:

 #chmod u+x systype.sh 

仅给当前用户添加可执行权限。

          该脚本文件的功能主要是检测操作系统的类型。它可以检测到系统的类型有:FreeBSDLinuxMacOSSolaris等。如果单独执行这个shell脚本:

./systype.sh

则输出结果为:linux。即检测本机的操作系统为linux

 


 

以上文字摘自:http://blog.chinaunix.net/u2/72333/showart_1662235.html。对原文有改动

 


第三步,进行源码的编译。在命令行下执行make命令。

通过make命令是直接将所有的源程序编译成可执行文件的。然而,我的系统在编译的时候出现了错误,编译没有完全成功。值得庆幸的是在WKDIR/lib/(WKDIR/home/ajaxhe/Dropbox/UNIX/apue.2e,下同下生成了库文件libapue.a,有了这个库文件,后面就可以单个编译源文件了。


 

编译过程举例:

WKDIR/下的fig1.3(实现ls部分功能)文件为例说明单独编译源文件的过程。

1.右键fig1.3文件图标,点击属性,可以看到该文件是指向WKDIR/file/ls1.c的一个符号连接,cd到WKDIR/file,修改ls1.c文件,将:

#include "apue.h"改成:#include "../include/apue.h"

即头文件apue.h的位置为父目录下inlucde文件夹中,这样就正确的指定了apue.h的位置。

2.在编译的时候加上库文件libapue.a,因为该文件实现了apue.h中的所有功能,主要有常用头文件,宏定义以及自定义函数的实现。

 

在终端中键入如下命令:

gcc -o ls1 ls1.c ../lib/libapue.a

3.生成可执行文件ls1,运行:

./ls1 /home

即可得到/home目录下的文件

 

ajaxhe

.

..

至此,APUE第二版作者提供的源码单独源码的编译方法已经实现

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值