首页 > 编程语言 >Unix环境高级编程-01:环境配置和第一个ls程序

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

时间:2023-01-12 21:44:38浏览次数:57  
标签:bin 01 lib 编译 Unix ls include dp

环境配置和第一个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 ./

标签:bin,01,lib,编译,Unix,ls,include,dp
From: https://www.cnblogs.com/zgblogs/p/17047932.html

相关文章

  • 2014蓝桥
    中国古代文献中,曾记载过“大衍数列”,主要用于解释中国传统文化中的太极衍生原理。它的前几项是:0、2、4、8、12、18、24、32、40、50...其规律是:对偶数项,是序号平方再......
  • 剑指offer代码 vs2019执行
    方法:代码文件夹名称为:CodingInterviewChinese2-master1.用vs2019加载解决方案.sln文件  2.一个解决方案下面有多个项目,通过右键解决方案->属性->通用属性->启动......
  • Hadoop学习笔记01
    一、大数据概念大数据​大数据(BigData):指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合。主要解决问题海量数据的采集存储和分析......
  • 树上分块解决限制距离的树上 DP 问题([NOI2014] 购票)
    [NOI2014]购票大家好,我喜欢暴力数据结构,所以我用分块过了此题。转移方程很简单:\[f_u=\min_{d_u-d_v\leql_u}{(d_u-d_v)\timesp_u+q_u+f_v}\]\[f_u=d_u\timesp_u+q......
  • 0112总结
    四道题都比较套路,AK了。T1[模拟赛20230112]密接枚举区间的左端点,再枚举众数出现的次数,那么满足条件的右端点就是一段区间。令\(pos1_i\)为第一个出现\(i\)次的数的......
  • 44、商品服务---品牌管理---VO&BeanUtils工具类
    1、VO例如:我们前端发过来的数据所包含的字段,可能在数据库中并不存在。以前我们的做法可能是在数据库表对应的实体类创建一个字段并加上注解@TableField(exist=false),但......
  • Windows Server 2008 R2安装Sqlserver 2008的步骤和设置跨网远程访问SQL server​
    WindowsServer2008R2安装Sqlserver2008的步骤和设置跨网远程访问SQLserver最近学习sql数据库,所以捣鼓一下安装sqlserver数据库的教程;​安装SQLServer2008R2需要.NE......
  • 【题解】P4899 [IOI2018] werewolf 狼人
    そうやってただ日が暮れるまで語り掛ける本当の言葉题意给定一个有向图和若干询问,每次询问是否存在一条满足条件的路径:端点分别为\(u,v\)前面一段不经过\([1,L......
  • 2019, Grad-CAM: Visual Explanations from Deep Networks via Gradient-based Locali
    AbstractGradient-weightedClassActivationMapping,usesthegradientsofanytargetconceptflowingintothefinalconvolutionallayertoprodeceacoarselo......
  • S2-037 CVE-2016-4438 远程代码执行
    漏洞名称S2-037CVE-2016-4438远程代码执行利用条件Struts2.3.20-StrutsStruts2.3.28.1使用了REST插件漏洞原理ApacheStruts2在使用REST插件的情况下,攻击者使......