环境配置和第一个ls程序
一、环境配置
- 下载apue3的代码(apue表示Unix环境高级编程的英文简写,3表示第三版)
下载地址:http://www.apuebook.com/src.3e.tar.gz,书籍地址:http://www.apuebook.com/code3e.html
执行以下命令下载
curl http://www.apuebook.com/src.3e.tar.gz -O
- 解压缩
tar -xzvf src.3e.tar.gz
解压出apue.3e
目录
3. 编译库文件
进入apue.3e/lib
中,make
进行编译
root@DESKTOP-ZGBLOG:/home/zg/Unix_Code/apue.3e/lib# ls
Makefile cliconn.o error.c lockreg.c openmax.c popen.o ptyfork.c readn.o senderr.o servlisten.c setfl.o sleep.c spipe.o ttymodes.o
Orecvfd.c clrfl.c error.o lockreg.o openmax.o prexit.c ptyfork.o recvfd.c sendfd.c servlisten.o signal.c sleep.o strerror.c writen.c
bufargs.c clrfl.o errorlog.c locktest.c pathalloc.c prexit.o ptyopen.c recvfd.o sendfd.o setfd.c signal.o sleepus.c tellwait.c writen.o
bufargs.o daemonize.c errorlog.o locktest.o pathalloc.o prmask.c ptyopen.o semaph.c servaccept.c setfd.o signalintr.c sleepus.o tellwait.o
cliconn.c daemonize.o libapue.a nspipe.c popen.c prmask.o readn.c senderr.c servaccept.o setfl.c signalintr.o spipe.c ttymodes.c
其中多个.o文件是每个c文件的编译中间结果,libapue.a是lib下.o文件链接结果的静态库文件
将libapue.a复制到 /usr/lib
,该目录下的库文件,C编译器在编译时会自动检索
cp libapue.a /usr/lib
将 apue.3e/include/apue.h
复制到 /usr/include
,C编译器在编译时会自动在该目录下检索头文件
cp inclue/apue.h /usr/include
二、ls程序
c1_3.c
#include "apue.h"
#include <dirent.h>
// ls1
int main(int argc, char *argv[]) {
// open directory handle
DIR *dp;
// read result
struct dirent *dirp;
if (argc != 2) {
err_quit("usage: ls directory_name");
}
// DIR pointer: opendir
if ( (dp = opendir(argv[1])) == NULL) {
err_sys("can't open %s", argv[1]);
}
// dirent struct: readdir
while ( (dirp = readdir(dp)) != NULL) {
printf("%s\n", dirp->d_name);
}
closedir(dp);
exit(0);
}
代码对应书源码的ls1.c
创建一个bin目录存放编译结果
mkdir bin
编译
cc -o bin/c1_3 c1_3.c -lapue
-lapue必须
测试
./bin/c1_3 ./
标签:bin,01,lib,编译,Unix,ls,include,dp
From: https://www.cnblogs.com/zgblogs/p/17047932.html