Unix环境高级编程-01:环境配置和第一个ls程序

环境配置和第一个ls程序

一、环境配置

  1. 下载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
  1. 解压缩
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 ./
posted @ 2023-01-12 21:37  不入凡尘  阅读(82)  评论(0)    收藏  举报