一、开源程序源代码的获取

项目官方自建站点:

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