一、开源程序源代码的获取
项目官方自建站点:
apache.org (ASF:Apache Software Foundation)
mariadb.org
...
代码托管:
Github.com
gitee.com 相当于中国的github
SourceForge.net
code.google.com
二、编译源码的项目工具
C、C++的源码编译:使用 make 项目管理器
confifigure脚本 --> Makefifile.in --> Makefifile
相关开发工具:
autoconf: 生成confifigure脚本
automake:生成Makefifile.in
java的源码编译: 使用 maven
三、 C语言源代码编译安装过程
利用编译工具,通常只需要三个大的步骤
./confifigure
(1) 通过选项传递参数,指定安装路径、启用特性等;执行时会参考用户的指定以及Makefifile.in文
件生成Makefifile
(2) 检查依赖到的外部环境,如依赖的软件包
make 根据Makefifile文件,会检测依赖的环境,进行构建应用程序,
make install 复制文件到相应路径
注意:安装前可以通过查看README,INSTALL获取帮助
四、编译安装准备
准备:安装相关的依赖包
开发工具:make, gcc (c/c++编译器GNU C Complier)
开发环境:开发库(glibc:标准库),头文件,可安装开发包组 Development Tools
软件相关依赖包
生产实践:基于最小化安装的系统建议安装下面相关包
yum install gcc make autoconf gcc-c++ glibc glibc-devel pcre pcre-devel openssl
openssl-devel systemd-devel zlib-devel vim lrzsz tree tmux lsof tcpdump wget
net-tools iotop bc bzip2 zip unzip nfs-utils man-pages
五、安装后的配置
1. 二进制程序目录导入至PATH环境变量中
编辑文件/etc/profifile.d/NAME.sh
export PATH=/PATH/TO/BIN:$PATH
/etc/profile.d/*.sh
/etc/bashrc
/etc/profile
/etc/bashrc #此文件执行两次
.bashrc
.bash_profile
2. 相关用户及文件
有些开源软件编译完成后,还需要创建相关的用户及文件
3. 导入帮助手册
编辑/etc/man.confifig|man_db.conf文件,添加一个MANPATH
范例:CentOS 7 编译安装 tree2.1
第一步:运行 confifigure 脚本,生成Makefifile 文件 ##部分软件直接是Makefile文件
第二步:Makefile文件中
选项分类:
安装路径设定:
--prefifix=/PATH:指定默认安装位置,默认为/usr/local/
--sysconfdir=/PATH:配置文件安装位置
System types:支持交叉编译
软件特性和相关指定:
Optional Features: 可选特性
--disable-FEATURE
--enable-FEATURE[=ARG]
Optional Packages: 可选包
--with-PACKAGE[=ARG] 依赖包
--without-PACKAGE 禁用依赖关系
#1 安装相关的依赖包
[root@centos7 ~]#yum install gcc make
#2 下载源码并解压
[root@centos7 ~]#tar xvf tree-1.8.0.tgz
#3 进入解压缩的目录,README和INSTALL
[root@centos7 ~]#cd tree-1.8.0/
[root@centos7 tree-1.8.0]#cat README #注意事项
[root@centos7 tree-1.8.0]#cat INSTALL #安装事项
#4 修改源码的版本号
[root@centos7 tree-1.8.0]#sed -i 's#v1\.8\.0#v.8.8.8#' tree.c
#5 编译准备[root@centos7 tree-1.8.0]#vim Makefile
prefix = /apps/tree
#6 编译
[root@centos7 tree-1.8.0]#make
#7 安装
[root@centos7 tree-1.8.0]#make install
#8 修改PATH变量
[root@centos7 ~]#echo 'PATH=#Makefile安装目录:$PATH' > /etc/profile.d/tree.sh
. /etc/profile.d/tree.sh
#9 验证结果
[root@centos7 ~]#tree --version
tree v8.8.8 (c) 1996 - 2018 by Steve Baker, Thomas Moore, Francesc Rocher,
Florian Sesser, Kyosuke Tokoro
#10 添加man帮助
#默认无法查看man
[root@centos7 ~]#man tree
No manual entry for tree
[root@centos7 ~]#vim /etc/man_db.conf
MANDATORY_MANPATH /apps/tree/man #11 运行tree查看生成的文件列表
[root@centos7 ~]#tree /apps/tree
/apps/tree
├── bin
│ └── tree
└── man
└── man1
└── tree.1
3 directories, 2 files