linux源码包编译安装软件详解

来源:互联网 发布:软件开发工作心得体会 编辑:程序博客网 时间:2024/06/05 07:52
./configuremakemake install
  • 1
  • 2
  • 3

源码安装三部曲,一直在使用却一直知其然不知其所以然,今天就说说所以然。 
源码到成为可运行程序经历了一下步骤

源码–>预处理–>编译–>汇编–>链接–>执行

make就做了编译汇编的工作,当然也也不是随随便便就干活的,要有依据,那他是根据什么干活的呢?根据一个叫makefile的文件。那么makefile哪来的呢?configure生成的。现在指定为什么make之前要执行./configure了吧。 
configure也是个懂规矩的孩子,他也不会乱生成的,他会根据一个叫做Makefile.in的模板文件生成makefile。 
问题又来了,makefile.in哪来的呢?当然是由一个叫automake的工具生成的。configure哪来的啊。他是由一个叫autoconf的工具生成的。

make install干了写什么呢,其实他就干了一个工作,把编译好的文件复制到指定的目录。说到底就是调用了install命令。可以自己去搜一下install命令,这个是个拷贝命令。

下面我们来总结一下整个编译安装的过程经历了什么。 
在发布源码包前开发人员用automake生成makefile.in,用autoconf生成configure脚步 
然后我们拿到的源码包,里面有源码、makefile.in文件、configure脚步。 
我们执行./configure根据自己的配置和makefile文件中的配置进行结合,处理依赖包的关系,生成makefile文件 
执行make命令根据makefile的信息,调用编译工具,可能是gcc也可能是其他编译器,对源码进行编译 
执行make install将编译后生成的文件复制到指定位置。 
整个编译完成。 
这样就可以用了吗?可以。

但是貌似启动起来好麻烦,得切换到安装的目录的bin目录下,要是能直接在命令行的任何路径下都能管理启动或是关闭就好了,你还要对一些执行文件做软连接,添加环境变量,设置启动服务等,要不然你每次都要到程序的安装目录去执行这是多么痛苦的事啊。 (以apache为例):

  1. 导出二进制程序目录至PATH环境变量中; 
    编辑文件/etc/profile.d/httpd2.2.sh文件,在文件中写入下边一行即可;(注意,httpd2.2.sh文件并不存在,创建即可) 
    export PATH=/root/test/httpd2.2/bin 
    保存退出,要让此设置即刻生效,需要在当前目录下执行命令 
    source httpd2.2.sh 
    现在我们就可以在系统的任何路径下打开或关闭httpd服务了,而不用记住那一长串的路径了
  2. 导出库文件路径; 
    编辑/etc/ld.so.conf.d/httpd2.2.conf; 注意:httpd2.2文件不存在,需自行创建 
    添加新的库文件所在目录至此文件中; 
    /root/test/httpd2.2/lib 
    让系统重新生成缓存: 
    ldconfig [-v] 
    -v查看详细内容
  3. 导出头文件(可以将目录建立一个符号链接,或者所有头文件每一个文件都建一个) 
    基于链接的方式实现: 
    ln -sv /root/test/httpd2.2/include /usr/include/httpd2.2
  4. 导出帮助手册 
    编辑/etc/man_db.conf文件,加入一个MANPATH; 注意:centos6.x系列中为/etc/man.config文件 
    执行 man apachectl 试试看 
    至此,编译安装的工作完成,赶紧动手试试哇!

configure脚步配置选项说明 
安装路径设定 
–prefix=path/to/dir 指定默认安装路径 
–sysconfdir=path/to/dir 配置文件安装位置 
System types: 
Optional Features:可选特性 
–disable-feature 禁用某特性 
–enable-feature[=age] 启用某特性 
Optional PACKAGES:可选包 
–with-package[=package] 依赖的包 
–without-package 不需要的包

原创粉丝点击