运行apue下的第一个程序
2012-10-11 19:35
260 查看
PUE中的代码不是download下来就可以直接编译执行的。由于头文件的问题,需要做相关的设置,修改一下相关的文件。
首先从http://www.apuebook.com/src.tar.gz下载源码压缩包,解压到相应目录,例如:
mkdir /home/Rockics/src
cd /home/Rockics/src/
wget http://www.apuebook.com/src.tar.gz
tar zxvf src.tar.gz
解压以后得到文件夹apue.2e。按照以下步骤完成设置,则可以编译相关代码:
1.进入相应目录:cd apue.2e;
2.修改文件Make.defines.linux:将其中的WKDIR 修改为/home/Rockics/src/apue.2e,保存退出;
3.修改文件std/linux.mk:将其中的nawk全部修改为wak,可在vi下使用命令:%s/nawk/awk/g完成;
4.make
5.将include下的apue.h cp到/usr/include下,如果不嫌麻烦也可以在编译时使用-I参数指定apue.h的路径。
将lib下的libapue.a cp到/usr/lib/下,如果不嫌麻烦也可以在编译时使用-L指定。
6、错误与解决
gcc -DLINUX -ansi -I/root/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 `/root/apue.2e/threadctl’
make[1]: *** [linux] Error 1
make[1]: Leaving directory `/root/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、知道源代码的软连接与位置
root@ubuntu:~/apue/apue.2e$ ll fig1.3
lrwxrwxrwx 1 root root 10 2010-11-27 07:27 fig1.3 -> file/ls1.c
2、进入file目录
root@ubuntu:~/apue/apue.2e/file$ ls
access devrdev.c ftw4.c longpath.c seek.c umask.c
access.c fileflags hello ls1 solaris.mk unlink
cdpwd fileflags.c hello.c ls1.c testerror unlink.c
cdpwd.c filetype hole macos.mk testerror.c zap
changemod filetype.c hole.c mycd uidgid zap.c
changemod.c freebsd.mk linux.mk mycd.c uidgid.c
devrdev ftw4 longpath seek umask
首先从http://www.apuebook.com/src.tar.gz下载源码压缩包,解压到相应目录,例如:
mkdir /home/Rockics/src
cd /home/Rockics/src/
wget http://www.apuebook.com/src.tar.gz
tar zxvf src.tar.gz
解压以后得到文件夹apue.2e。按照以下步骤完成设置,则可以编译相关代码:
1.进入相应目录:cd apue.2e;
2.修改文件Make.defines.linux:将其中的WKDIR 修改为/home/Rockics/src/apue.2e,保存退出;
3.修改文件std/linux.mk:将其中的nawk全部修改为wak,可在vi下使用命令:%s/nawk/awk/g完成;
4.make
5.将include下的apue.h cp到/usr/include下,如果不嫌麻烦也可以在编译时使用-I参数指定apue.h的路径。
将lib下的libapue.a cp到/usr/lib/下,如果不嫌麻烦也可以在编译时使用-L指定。
6、错误与解决
gcc -DLINUX -ansi -I/root/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 `/root/apue.2e/threadctl’
make[1]: *** [linux] Error 1
make[1]: Leaving directory `/root/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、知道源代码的软连接与位置
root@ubuntu:~/apue/apue.2e$ ll fig1.3
lrwxrwxrwx 1 root root 10 2010-11-27 07:27 fig1.3 -> file/ls1.c
2、进入file目录
root@ubuntu:~/apue/apue.2e/file$ ls
access devrdev.c ftw4.c longpath.c seek.c umask.c
access.c fileflags hello ls1 solaris.mk unlink
cdpwd fileflags.c hello.c ls1.c testerror unlink.c
cdpwd.c filetype hole macos.mk testerror.c zap
changemod filetype.c hole.c mycd uidgid zap.c
changemod.c freebsd.mk linux.mk mycd.c uidgid.c
devrdev ftw4 longpath seek umask
相关文章推荐
- APUE中的第一个程序-myls如何才能运行
- (转载)unix环境高级编程 -- APUE中的第一个程序-myls如何才能运行
- c# 程序只能运行一次(多次运行只能打开同一个程序) 并激活第一个实例,使其获得焦点,并在最前端显示.
- 运行的第一个android程序
- apue学习第二天(2)——第一个程序myls的执行
- 第一个java程序的编译和运行(linux下安装JDK)------一次编译,到处运行
- JDK安装、配置以及编译运行我第一个JAVA程序
- 正在学习 android 开发,开发环境已搭建完毕,第一个测试程序已在模拟器上运行成功。
- Arduino可穿戴教程之第一个程序——上传运行程序(四)
- 在命令行下运行第一个hadoop的程序
- Hadoop学习全程记录——在Eclipse中运行第一个MapReduce程序
- 2.运行我的第一个Android程序,学习四大组件
- 第一个小程序在开发板上运行成功he…
- 运行我的第一个python程序
- 新手配置win8+opencv2.4.6+vs2012 x32环境,运行第一个程序:读取YUV格式视频
- C# 实现程序只启动一次(多次运行激活第一个实例,使其获得焦点,并在最前端显示)
- 学习DirectFB之:编译运行第一个DirectFB程序
- Android的第一个程序运行
- 《如何运行第一个C/C++语言程序》
- 运行第一个OpenCV程序