Bootstrap

搭建apue环境

由于学校要上Unix编程课,需要apue环境,而CentOS7目前官方已经不再提供维护,以下为个人搭建过程,仅供参考

系统环境CentOS-7-x86_64-DVD-2009 VMware虚拟机运行

CentOS7系统iso文件网盘地址
通过网盘分享的文件:CentOS-7-x86_64-DVD-2009.iso
链接: https://pan.baidu.com/s/1B4kNfJmPYHShR0ETtjtKgA?pwd=qb63 提取码: qb63 

http://www.apuebook.com 中获取2013年源码

存源码压缩包到/home目录下

解压缩

tar -xzvf src.3e.tar.gz

查看README之后按照要求执行

make

出现了以下报错

make[1]: Entering directory `/home/sandama/apue.3e/threads'
gcc -ansi -I../include -Wall -DLINUX -D_GNU_SOURCE  barrier.c -o barrier  -L../lib -lapue -pthread -lrt -lbsd
/tmp/cccMURGh.o: In function `thr_fn':
barrier.c:(.text+0x80): undefined reference to `heapsort'
collect2: error: ld returned 1 exit status
make[1]: *** [barrier] Error 1
make[1]: Leaving directory `/home/sandama/apue.3e/threads'
make: *** [all] Error 1

搜索网上资料,发现是heapsort在CentOS-7下没有相关的库,只能下载Fedora的资源进行安装libbsd libbsd-devel
由于目前官方已经不对资源进行维护(2024年停止维护),只能自己修改镜像

以下是在CentOS 7中更换yum源的方法(备份后更换)

cd /etc/yum.repos.d/
mv CentOS-Base.repo CentOS-Base.repo.backup
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

清理yum缓存并更新

yum clean all 
yum makecache

安装好镜像源后,要确保EPEL仓库已启用,这里由于我没有启用,直接给出安装方法

cd /etc/yum.repos.d/
sudo cp CentOS-Base.repo CentOS-Base.repo.backup
sudo yum install epel-release

安装libbsd libbsd-devel

yum install libbsd libbsd-devel

之后即可正常编译

make

配置库和头文件
把apue.3e/lib目录中的静态库libapue.a复制到/usr/lib 目录中
把apue.3e/include/apue.h复制到/usr/include 目录中
使得gcc编译期间能顺利找到头文件apue.h

cp ./lib/libapue.a /usr/lib/
cp ./include/apue.h /usr/include/

补充:gcc工具安装(新系统没装gcc嘻嘻)

sudo yum update -y
sudo yum groupinstall -y "Development Tools"

以上即为环境搭建全流程

测试是否搭建成功

gcc-o mylsls1.c -lapue
./myls


如果结果为

usage: ls directory_name


即表示环境搭建完成

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;