Linux程序包管理--源码编译的原理和基本方法

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数据库中, 安装和卸载软件时都需要记录大量安装信息, 将源码包统一安装在单个目录时安装和卸载都不用记录大量信息

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

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

时间: 2024-10-17 01:51:31

Linux程序包管理--源码编译的原理和基本方法的相关文章

Linux程序包管理--rpm和yum的原理和基本用法

Linux中的程序包主要分为两类: 二进制可执行安装包和源代码程序文件包. 本文主要讲解使用rpm程序包管理器和yum管理器前端工具来实现对二进制可执行安装包的安装, 查询, 升级和卸载等相关操作. Linux中在二进制可执行安装程序包安装上会涉及多个文件的操作, 操作过程就会比较复杂, 为简化该过程就使用程序安装包管理器来管理程序包的安装过程, 大大简化了程序包安装过程. Linux根据发行版本不同, 使用不同的程序包管理器实现对程序包的管理, 在这里主要介绍两大分支: debian: 使用d

linux程序包管理 rpm yum 编译

rpm命令:rpm  [OPTIONS]  [PACKAGE_FILE] 安装:-i, --install 升级:-U, --update, -F, --freshen 卸载:-e, --erase 查询:-q, --query 校验:-V, --verify 数据库维护:--builddb, --initdb 安装:rpm {-i|--install} [install-options] PACKAGE_FILE ... rpm  -ivh  PACKAGE_FILE ... GENERAL

linux程序包管理rpm,yum和编译安装以及冒泡排序练习

linux程序包管理: API:Application Programming Interface POSIX:Portable OS 程序源代码--> 预处理--> 编译--> 汇编--> 链接 静态编译: 共享编译:.so ABI:Application Binary Interface Windows与Linux不兼容 ELF(Executable and Linkable Format) PE(Portable Executable) 库级别的虚拟化: Linux: WIN

Linux程序包管理

Linux程序包管理 RPM包基础 RPM YUM 编译安装 概述 Linux上的程序包管理,是我们的必备技能,本文将从三个视角:rpm.yum.源码编译来浅析Linux的程序包管理.首先,我们来看下本文的主要内容: - 程序包的命名- RPM: 程序包管理器    安装.卸载.升级.查询.校验.数据库维护      - YUM: RPM的前端程序    yum的配置文件     yum的常规操作:升级.检查.卸载.查看.包组管理     使用光盘当作本地yum仓库     yum的命令行选项及

Linux程序包管理及yum安装管理

Linux程序包管理: API:ApplicationProgramming Interface   应用编程接口 POSIX:Portable OS    遵循本协议的程序均可在不同系统间移植 程序编写完成后,执行所要经过的处理步骤: 程序源代码 --> 预处理 --> 编译 --> 汇编 --> 链接 静态编译: 共享编译:直接调用.so共享对象实现 ABI:ApplicationBinary Interface  应用二进制接口 Windows与Linux所支持的可执行二进制

Linux程序包管理工具简介

一.Linux程序包管理器-RPM RPM 的全称为Redhat Package Manager ,是由Redhat 公司提出的,用于管理Linux 下软件包的软件.Linux 安装时,除了几个核心模块以外,其余几乎所有的模块均通过RPM 完成安装.RPM 有五种操作模式,分别为:安装.卸载.升级.查询和验证. 1.RPM 安装操作 命令: rpm -i 需要安装的包文件名 例: rpm -i example.rpm 安装 example.rpm 包 rpm -iv example.rpm 安装

Linux程序包管理总结

Linux程序包管理 相比于Windows系统,Linux的程序包的管理就没有那么简单了,当然在Linux系统中也有像Windows系统中EXE或者MSI安装包一样的安装包文件,可以直接实现进行程序包安装,但即是这样的程序包的安装也要比Windows复杂多了,当然,大家不要被我这两句话给唬到了,当你学过这课后,你会发现Linux的程序包管理其实也很简单的,同样你也会发现Linux的程序包管理比Windows的好玩儿多了. Linux中的程序包格式: .deb  源于debian系统的安装包格式

Linux程序包管理之rpm包管理

Linux程序包管理 软件包管理 功能:将编译好的程序的各组成文件打包成一个或几个程序包文件,为了方便的实现程序包的安装.升级.卸载.查询.校验.数据库维护. API:Application ProgramInterface应用程序接口: ABI:Application BinaryInterface应用二进制接口: Unix-like和linux在ABI层次是相同的 linux程序包:ELF格式: 但是与Windows相差甚远 windows程序包:exe,msi格式: API层次兼容不一定A

Linux程序包管理rpm与yum

Linux程序包管理 Linux中软件的安装主要有两种形式:一种是直接下载源代码包自行编译后安装,另一种直接获取rpm软件包进行安装. 程序的组成部分: 二进制程序:程序的主体文件,比如我们运行一个ls命令就是一个二进制程序. 库文件:程序的公用功能模块,比如A程序需要用一个打印机,B程序也需要一个打印机就可以公用这一个模块了.在window下库文件为.dll格式,linux下为/lib/*so格式的文件. 配置文件:通过设置配置文件来改变程序启动时的运行特征. 帮助手册:使用的帮助文档.