apue源代码编译和使用

本文介绍如何编译Advanced Programming in the UNIX® Environment (APUE)第二版中的示例程序。通过将apue.h复制到/usr/include并把libapue.a放到/usr/lib,使用gcc -lapue命令即可完成编译。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于apue第二版(apue.2e)的源代码编译请参考点击打开链接

下面是关于如何编译我们自己写的apue上的例子的程序。

以例子1为例。

假设文件名为exc.1.1.c,放在~/source目录下。

内容如下所示:

#include <dirent.h>
#include <apue.h>
int
main(int argc, char *argv[]){
	DIR 		*dp;
	struct dirent	*drp;
	dp = opendir(argv[1]);
	if(dp==NULL)err_sys("can not open %s.", argv[1]);
	while((drp=readdir(dp))!=NULL){
		printf("%s\n",drp->d_name);
	}
	return 0;
}

我做了一点简化。

可以发现代码中直接以#include <apue.h>的形式使用apue提供的库文件的。这种方式gcc会从系统的文件目录下查找所需头文件,即/usr/include ,所以为了方便使用qpue库,第一步将apue.h复制到/usr/include目录中:

sudo cp ~/apue.2e/include/apue.h     /usr/include/

如此一来,gcc可以顺利找到头文件apue.h了。头文件仅仅是含有相关的数据类型和函数原型的声明,gcc借助头文件可以完成对我们写的程序的编译工作,但是链接工作还没有办法完成。第二步,要完成链接工作就要将apue头文件对应的库实现链接进来,这个链接任务使用gcc的-l参数完成。所以我们只需要提交将apue的共享库提供就可以了。同头文件原理,gcc首先从系统的目录即/usr/lib中寻找所需的库文件,所以我们将apue的库文件,即编译apue后,在lib文件夹下的libapue.a文件,将之复制到/usr/lib中:

sudo cp ~/apue.2e/lib/libapue.a    /usr/lib/

如此一来,最后,我们只要使用命令:

gcc -lapue -o exc.1.1 exc1.1.c

即可顺利编译。

这里说明下,gcc的-l参数,后面给出的所apue的库名。库名与库对应的文件名不同。apue库对应的库文件名是:lib + apue + .a ,这就是我们刚刚cp到/usr/ib文件夹中的那个文件。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值