千家信息网

程序包

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,程序包管理之编译源代码安装为什么要进行源代码编译安装?1.对应的程序包并不能直接获取到;2.已经编译好的二进制中,尚不包含我们所需要的功能;3.已经编译好的二进制中,包含的功能太多,我们并不需要;1.
千家信息网最后更新 2026年11月03日程序包

程序包管理之编译源代码安装

为什么要进行源代码编译安装?

1.对应的程序包并不能直接获取到;

2.已经编译好的二进制中,尚不包含我们所需要的功能;

3.已经编译好的二进制中,包含的功能太多,我们并不需要;

1.想要使用某个程序包,但是找不到可用的二进制包;

2.想要使用的程序包有二进制格式的,我们所需要的的功能或特性并没有被编译;

程序的源代码包有两种格式:

原始的源代码包:name-VERSION.tar.gz

tar xf命令释放包中的源码文件

rpm封装的源代码包:name-VERSION.release.src.rpm

rpm -ivh 将源代码文件安装到某个目录中;

源代码程序包的组织形式:

多个源代码文件,

同一个文件的不同代码段或者式不同文件的不同代码段之间可能有依赖关系;

在编译源代码的时候,必须要首先编译某些代码段,或者说必须先编译某个文件中的代码段,然后才能进行后续的编译;

在源代码文件之间可能存在跨文件的依赖关系,这种依赖关系只有其作者最为清楚

程序员为了让用户能够比较轻松的了解文件与文件之间,代码段与代码段之间的依赖关系,他们会编写说明性文档;


后来程序员会为每一个源代码文件附加一个头部信息,用以说明文件和代码段的依赖关系,程序员开发了一个工具专门提取此类信息并汇总,结合程序员给提供的配置末班,有针对性的生成按章的说明文档,其中包括:此次编译调用哪个预处理器? 如何进行预处理? 调用哪个编译器? 调用哪个汇编器? 如何进行汇编? 程序需要安装在那个路径下?


源代码项目管理工具

C/C++: make

java:maven

python:buildout

说明性的文档:makefile 这样的文件并不是固定不变的,而是根据用户进行选择而进行不断变化的

makefile文件用makefile.in(makefile.win)的模板生成的

利用configure脚本,接受用户的选择,并且configure脚本会将所有接收来的信息汇总到makefile.in模板上,替换模板中相应的内容,从而生成makefile文件

程序员编写源代码,并且给源代码文件增加头部信息;提供Makefile.in的模版文件;

需要autoconf工具,生成configure脚本;

需要automake工具,并利用configure脚本接受来的所有参数,创建makefile文件

有了正确的makefile文件,可以使用make命令来进行源代码编译

预处理-->编译-->汇编-->链接-->生成可执行的二进制文件

安装二进制文件--将二进制文件复制到正确的目录路径中 在现在的源代码编译过程中如果在源代码包中已经有了configure脚本,我们还需要做下列工作

1.使用./configure脚本根据用户所提供的选项信息生成makefile文件

2.make

3.make install

建议:在真正的安装程序包之前最好先查看源代码包中的install的文件,如果没有这个文件,则查看readme的文件;

如何获得开源程序的源代码包

1.发布程序的官方站点 apache.org mariadb.org kernel.org

2.代码托管站点

SourceForge

Github.com

code.google.com

在Linux系统上进行源代码编译安装的前提:

1.编译开发环境必须符合要求

centos6系统

yum groupinstall"Development tolls" "server platform development"

centos7系统

yum groups install "Development tolls"

2.编译器要符合要求

gcc,cpp,make,automake...

3.编译时所用到的标准库要完备 glibc,c标准库

满足上述条件之后,接下来可以进行源代码编译安装

1.运行configure脚本

大量的选项:置顶安装过程中所用到的各种路径,启动或关闭的特性等

--help:获取该程序包所支持的所有选项

选项的分类

安装路径选项

--prefix=路径(/PATH/TO/SOFTWARE_INSTALL)

系统类型选项

如果所有的系统类型选项都不选择,则默认在本机的默认操作系统和本级的平台架构基础之上进行编译,也可以在编译的时候选择其他文件系统和其他的平台类型,这种情况通常称为交叉编译;

可选特性选项:

--disable-FEATURE

--enable-FEATURE

在编译源代码的时候,选择启用或禁用某项功能或特性

可选程序包选项:

在编译源代码的时候,源代码中的某些特性可能会依赖其他外部程序包

--with-PACKAGE

--without-PACKAGE

选择使用或不使用外部程序包

上述命令及选项之后会在源代码目录中自动创建出makefile文件

2.make [-j] #(不能超过处理器核心数)

3.make install

源代码安装之后,要做收尾工作

1.到处二进制程序所在的目录到PATH变量中;

在/etc/profile.d/name.sh

export PATH=/PATH/TO/BINARY:$PATH

source /etc/profile.d/name.sh

2.导出库文件:

编辑/etc/ld.so.conf.d/name.conf

/PATH/TO/SOFTWARE_LIBRARY

ldconfig [-v]

3.导出头文件:

创建对应的符号链接

ln -sv /PATH/TO/HEAD_FILE /uer/include/name

4.导出帮助文件

centos7中默认已经导出帮助文件

centos6

编辑/etc/man.config文件,在该文件中添加一个新行

MANPATH=/PATH/TO/MAN_FILE


举例安装httpd-2.4.18

1.首先要解决开发工具环境;

yum groupinstall "Development tools"


2.使用适合httpd-2.4.18版本的apr及apr-util工具;

安装apr工具

~]# tar xf apr-1.5.2.tar.bz2 -C /usr/src

~]# cd /usr/src/apr-1.5.2

~]# ./configure --prefix=/usr/local/apr-1.5.2

~]# make

~]# make install


安装arp-util工具

~]# tar xf apr-util-1.5.4.tar.bz2 -C /usr/src

~]# cd /usr/src/apr-util-1.5.4

~]# ./configure --prefix=/usr/local/apr-util-1.5.4 --with-apr=/usr/local/apr-1.5.2

~]# make

~]# make install


3.需要安装pcre-devel以满足httpd的正则表达式使用需求;

yum -y install pcre-devel


编译安装httpd:

~]# tar xf httpd-2.4.18.tar.gz -C /usr/src

~]# cd /usr/src/httpd-2.4.18

~]# ./configure --with-apr=/usr/local/apr-1.5.2 --with-apr-util=/usr/local/apr-util-1.5.4

~]# make

~]# make install


收尾:

1.导出二进制文件:

vim /etc/profile.d/httpd.sh

export PATH=/usr/local/apache2/bin:$PATH


source /etc/profile.d/httpd.sh


2.导出库文件:

vim /etc/ld.so.conf.d/httpd-x86_64.conf

/usr/local/apache2/modules


ldconfig -v


3.导出头文件:

ln -sv /usr/local/apache2/include /usr/include/httpd



文件 源代码 编译 程序 二进制 代码 工具 系统 脚本 生成 选择 特性 程序员 路径 之间 信息 功能 时候 用户 目录 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技 疫情对互联网科技公司影响 狮子座互联网科技 互联网科技公司电话 互联网与未来科技 银优互联网科技有限公司 深圳期待互联网科技 互联网系的金融科技公司 常德市电业局互联网科技部 互联网科技公司有风险吗 互联网保险科技创业 允成互联网科技有限公司融资 互联网金融科技名词解释 中和天地互联网科技有限公司 互联网金融科技公司的优势 上海钢联属于互联网科技股吗 厦门江牛科技互联网 互联网科技年终奖 宁波跨境商互联网科技有限公司 东风日产互联网科技公司叫什么 深圳市人人互联网科技有限公司 互联网巨头反垄断金融科技 亿策互联网科技 互联网科技缩写 广西互联网科技公司 厦门比较好的科技互联网公司 扫呗互联网科技有限公司 江苏互联网智能科技产品出厂价 版纳互联网科技选哪家 上海互联网科技园景观
0