Linux中使用rpm格式的程序文件包来安装是比较方便的方法, 但是有一部分程序文件包没有rpm包格式, 这时就需要用户自己手工编译源码包来进行安装. 文本主要讲解源码编译的原理和基本操作过程.
源码包命名方式
name - VERSION . tar . gz
其中: VERSION = major . minor . release
major表示主版本号, 经过比较大的改进
minor表示次版本号, 改进比较小
release表示对一些bug进行修复
源码包编译过程
源码包是指经过程序员编写之后, 但没有经过编译的源代码, 源代码编译成可执行程序的简要编译过程如下图所示:
# 上图中只是简要的说明了C语言源代码编译过程, 实际过程比上图所示的要复杂得多
处理过程: 源代码 --> 预处理 --> 编译 --> 汇编 --> 链接
其中: 预处理通过预处理器进行处理, 编译通过gcc编译器进行处理, 汇编通过汇编器进行处理, 链接通过链接器进行处理
文件格式处理过程: NAME.c文件 --> 多个NAME.o目标文件 --> NAME可执行文件
简化编译过程
普通用户在对源码包进行安装时, 需要安装以上开发软件并完成预处理,编译,汇编,链接过程才能实现对源码包进行编译.
为方便普通用户对源码的安装, 普通用户只需要安装必备的开发环境, 之后可以主要通过configure脚本文件和make命令来完成, 简化了源码包的编译安装过程.
其中configure脚本文件是程序员编写源码包时提供的, make命令是开发人员使用较多的工具.
a. configure脚本主要作用是通过检查用户的编译环境, 在根据用于指定的编译特性来生成Makefile文件;
b. make工具可以根据生成的Makefile文件中相关的文件名称, 进行编译生成二进制可执行程序文件, make工具的实质是对源码文件生成对应的目标文件, 再对多个目标文件并调用相关库函数生产1个二进制可执行程序文件;
源码包编译安装过程
1. 从可靠途径获取源码包文件, 并验证源码包的完整性;
2. 对源码包进行正确格式的解压缩展开;
3. 安装必备的基础软件: 开发环境和开发工具(此项非必须进行, 如果第一次进行编译安装就必须安装);
# 开发工具: Development tools, Server Plat form Development
4. 进入源码包目录内, 查看INSTALL或README文件内容, 主要是描述安装过程和基本注意事项;
5. 运行源码包目录下的运行./configure --help来查看configure的相关帮助说明, 在运行./configure脚本文件来创建Makefile文件, 可以指定安装位置和指定启用的特性;
6. 编译: 先执行make clean命令(非必须), 再执行make命令;
# make clean命令会读取生成的Makefile文件中关于Clean的工作: 清除当前系统上与此次安装重叠的目标文件
# make命令读取Makefile文件将源码文件编译生成目标文件, 再将其生成可执行文件, 可执行文件仅被存放在当前目录下而没有被执行
7. 使用make install命令来安装可执行程序文件至用户指定的目录中;
8. 对于安装到个人指定目录时, 对于一部分文件系统内核读取不到, 需要修改某些文件配置:
a. 修改PATH环境变量: 创建配置文件: /etc/profile.d/SOFT.sh, 在其中添加: PATH=$PATH:SOFT的bin目录
b. 新增lib库文件搜索路径: 创建配置文件: /etc/ld.so.conf.d/SOFT.conf, 在其中添加: SOFT的lib目录
c. 新增h头文件的搜索路径: 创建目录符号链接文件: ln -s /usr/local/SOFT/include/ /usr/include/SOFT
d. 新增man文件搜索路径: 在配置文件/etc/man.config中添加路径: MANPATH SOFT的man目录
安装建议:
a. 软件安装在 /usr/local 目录下
b. 源码包安装在 /usr/local/src 目录下
c. 软件的配置文件etc, 库函数lib, 可执行文件bin, 帮助文档统一放在一个目录下 /usr/local/SOFT/{etc,lib,bin,man}
# 因为源码包安装时没有通过rpm程序包管理器, 源码包的安装信息没有被记录在rpm数据库中, 安装和卸载软件时都需要记录大量安装信息, 将源码包统一安装在单个目录时安装和卸载都不用记录大量信息
以上就是源码包编译安装过程和基本操作过程.
本人水平有限, 如有理解不当的地方, 请大家给予指正, 非常感谢!
本文出自 “Pavel” 博客,请务必保留此出处http://pavel86.blog.51cto.com/8349178/1690022
原文地址:http://pavel86.blog.51cto.com/8349178/1690022