由于学校要上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
即表示环境搭建完成