如何使用APUEc 源代码 如何使用

博客分类:
为了用APUE的源码折腾了一下,网上很多方法都不能用,或者有小问题,特此记录。
注意,不同环境的编译提示有所不同,如果你的环境和我的相似,那么应该没问题。
Linux mypad 2.6.38-ARCH #1 SMP PREEMPT Tue May 3 06:04:40 UTC
Intel(R) Core(TM)2 Duo CPU T6570 @ 2.10GHz GenuineIntel GNU/Linux
确保你已经安装了gcc和gawk。
1.到www.apuebook.com下载源码
2.tar解包,cd apue.2e
3.vi Make.defines.linux
修改变量WKDIR,指向你的apue源码的位置,我的是/home/huangz/code/apue.2e,所以
WKDIR=/home/huangz/code/apue.2e
4.vi include/apue.h
增加一个常量ARG_MAX,这是threadctl/getenv1.c和threadctl/getenv3.c要用到的;4096这个值是参考里给的,如果有问题,自己修改吧。
#define ARG_MAX 4096
5.vi threadctl/getenv1.c
#include "apue.h"
6.vi threadctl/getenv3.c
#include "apue.h"
7.vi threads/badexit2.c
修改第31行,将pthread_self()的返回值转换为int类型。
printf("thread 2: ID is %d\n", (int)pthread_self());
8.vi std/linux.mk
将两个nawk改为gawk
10.sudo cp include/apue.h /usr/include
sudo cp lib/libapue.a /usr/lib
好了,测试一下,记得要用-lapue命令让编译器链接apue库
gcc main.c -lapue
浏览: 285788 次
来自: 广东-清远
不错,可以自己写一个
谢谢!foreach只调用,不返回结 ...
part 2? part 3?
希望楼主完成剩余工作, 写的太好了.
嵌套好像会造成大量数据冗余吧?
请教一下:如果使用嵌套方式,如果我在被引用的Collectio ...
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)2013年6月 Linux/Unix社区大版内专家分月排行榜第二2013年5月 Linux/Unix社区大版内专家分月排行榜第二2013年3月 Linux/Unix社区大版内专家分月排行榜第二2013年1月 Linux/Unix社区大版内专家分月排行榜第二2012年12月 Linux/Unix社区大版内专家分月排行榜第二2012年8月 Linux/Unix社区大版内专家分月排行榜第二2011年12月 Linux/Unix社区大版内专家分月排行榜第二2011年10月 C/C++大版内专家分月排行榜第二2011年10月 Linux/Unix社区大版内专家分月排行榜第二
2012年6月 C/C++大版内专家分月排行榜第三2012年6月 PHP大版内专家分月排行榜第三2012年5月 C/C++大版内专家分月排行榜第三2012年3月 Linux/Unix社区大版内专家分月排行榜第三2012年2月 Linux/Unix社区大版内专家分月排行榜第三2011年11月 C/C++大版内专家分月排行榜第三
匿名用户不能发表回复!|下次自动登录
现在的位置:
& 综合 & 正文
apue源代码的使用与编译
编译源代码
1、从官网下载源代码
3、默认解压后的源代码名称为:apue.2e,里面包含了所有的代码
4、修改目录,我的系统是ubuntu10.10,修改apue.2e下的Make.defines.linux
WKDIR=/home/sdoning/apue/apue.2e(主要是该路径)
5、在apue.2e目录下运行make命令
6、错误与解决
gcc -DLINUX -ansi -I/home/sdoning/apue/apue.2e/include -Wall -D_GNU_SOURCE
-c -o getenv1.o getenv1.c
getenv1.c:4: error: ‘ARG_MAX’ undeclared here (not in a function)
make[2]: *** [getenv1.o] Error 1
make[2]: Leaving directory `/home/sdoning/apue/apue.2e/threadctl’
make[1]: *** [linux] Error 1
make[1]: Leaving directory `/home/sdoning/apue/apue.2e’
make: *** [all] Error 2
解决方法:
在apue.2e/include/apue.h中添加一行:
#define ARG_MAX 4096
打开apue.2e/threadctl/getenv3.c(包括getenv1.c),添加一行:
#include "apue.h"
7、再次编译即可。
使用源代码:
1、知道源代码的软连接与位置
sdoning@ubuntu:~/apue/apue.2e$ ll fig1.3
lrwxrwxrwx 1 sdoning sdoning 10
07:27 fig1.3 -& file/ls1.c
2、进入file目录
sdoning@ubuntu:~/apue/apue.2e/file$ ls
longpath.c
solaris.mk
fileflags.c
testerror.c
filetype.c
changemod.c
freebsd.mk
./ls1 /home
【上篇】【下篇】下次自動登錄
現在的位置:
& 綜合 & 正文
如何使用APUE源代碼(UNIX高級編程)
方法一:1.APUE2源代碼下載:2.我保存到了/root下.解壓縮:tar -xzvf src.tar.gz3.cd apue.2e進入apue.2e目錄,查看README,告訴我們linux系統只要修改Make.defines.linux再make4.vi Make.defines.linux 修改WKDIR=/root/apue.2e 就是說工作目錄為WKDIR=/root/apue.2e5.修改/root/apue.2e/std/linux.mk把全部的nawk改為awk.因些linux默認沒有nawk6.make
現在,你可以把它拷貝到你能尋找的地方,在編寫例子的時候,你就可以
4、拷貝apue2e_src/apue.2e/include/apue.h和apue2e_src/apue.2e/lib/libapue.a
到你的源代碼目錄。
5、使用gcc -o hello hello.c libapue.a來編譯你的源代碼
方法二:apue編程的例子都有關include "apue.h"的代碼,其實apue.h並不是系統自帶的,它是作者編寫的頭文件,源代碼在附錄B中.因此一個方法是.把剛才生成的 /root/apue.2e/include/apue.h直接複製到/usr/include下.還有像err_sys的函數也在附錄B中.同樣的方法是在/usr/include新建一個 my_err.h的文件,把Figure B.3. Error functions that output to standard error內容複製進去.這樣按例子編程就只需要在行首添加:#include "my_err.h"就可以了..
【上篇】【下篇】

我要回帖

更多关于 源代码如何使用 的文章

 

随机推荐