设为首页 收藏本站
查看: 736|回复: 0

[经验分享] Linux程序包管理--源码编译的原理和基本方法

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-9-1 10:11:48 | 显示全部楼层 |阅读模式
Linux中使用rpm格式的程序文件包来安装是比较方便的方法, 但是有一部分程序文件包没有rpm包格式, 这时就需要用户自己手工编译源码包来进行安装. 文本主要讲解源码编译的原理和基本操作过程.


源码包命名方式
name - VERSION . tar . gz
其中: VERSION = major . minor . release
major表示主版本号, 经过比较大的改进
minor表示次版本号, 改进比较小
release表示对一些bug进行修复

源码包编译过程

源码包是指经过程序员编写之后, 但没有经过编译的源代码, 源代码编译成可执行程序的简要编译过程如下图所示:

wKiom1XjkY6xj8IrAAD7vME8ASU158.jpg

# 上图中只是简要的说明了C语言源代码编译过程, 实际过程比上图所示的要复杂得多
处理过程: 源代码 --> 预处理 --> 编译 --> 汇编 --> 链接
其中: 预处理通过预处理器进行处理, 编译通过gcc编译器进行处理, 汇编通过汇编器进行处理, 链接通过链接器进行处理
文件格式处理过程: NAME.c文件 --> 多个NAME.o目标文件 --> NAME可执行文件

简化编译过程


wKioL1Xjk6zjMF31AAF9C4sYIWs688.jpg

普通用户在对源码包进行安装时, 需要安装以上开发软件并完成预处理,编译,汇编,链接过程才能实现对源码包进行编译.
为方便普通用户对源码的安装, 普通用户只需要安装必备的开发环境, 之后可以主要通过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数据库中, 安装和卸载软件时都需要记录大量安装信息, 将源码包统一安装在单个目录时安装和卸载都不用记录大量信息

以上就是源码包编译安装过程和基本操作过程.

本人水平有限, 如有理解不当的地方, 请大家给予指正, 非常感谢!


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-108256-1-1.html 上篇帖子: linux平台下一键配置网站https 下篇帖子: Linux程序包编译安装 Linux 程序
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表