189 8069 5689

程序包-创新互联

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

创新互联专注于本溪企业网站建设,成都响应式网站建设公司,商城开发。本溪网站建设公司,为本溪等地区提供建站服务。全流程按需设计,专业设计,全程项目跟踪,创新互联专业和态度为您提供的服务

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

  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

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


文章题目:程序包-创新互联
网站地址:http://cdxtjz.cn/article/jihei.html

其他资讯