- 论坛徽章:
- 0
|
这几天正在学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 |
|