源码编译安装–./configure

源码的安装一般由3个步骤组成:配置(configure)、编译(make)、安装(make install)

注:本文出于个人学习需要,对./configure命令的知识进行整理,内容参考其他博主文章,并加入自己的实践和见解,如有侵权,请联系

./configure 是可执行的脚本文件,用来检测你的安装平台的目标特征的,并生成Makefile文件。(部分安装不会生成Makefile在这里插入代码片) make 是用来编译的,它从Makefile中读取指令,然后编译。 make install是用来安装的,它也从Makefile中读取指令,安装到指定的位置。

指令输入(最后运行make clean可以删除临时文件)

分开输入指令

./configre ----prefix=你想保存的路径

make

make install

合起来输入指令

./configure && make && make install

关于–prefix(配置安装目录)

1、配置方法:默认配置(可执行文件放在/usr /local/bin,库文件默认放在/usr/local/lib,配置文件默认放在/usr/local/etc,其它的资源文件放在/usr /local/share)将安装后的所有资源文件都放在/usr/local/test(推荐放在~/usr路径,避免root问题)目录中,则输入: !!!!更这个目录最好用绝对路径!!!

./configure --prefix=/usr/local/test

2、卸载用法:使用–prefix选项的另一个好处是方便卸载软件或移植软件;当某个安装的软件不再需要时,只须简单的删除该安装目录,就可以把软件卸载得干干净净;而移植软件只需拷贝整个目录到另外一个机器即可(相同的操作系统下)。 3、root权限问题:在服务器上操作,如果没有root(管理员)权限,那么运行./configure会报错(默认路径/usr的访问需要root),可以通过–prefix将默认路径修改到当前用户可以操作的路径下(比如说在本用户的主目录新建一个usr目录,并设置 --prefix=~/usr),即可解决无root权限的编译问题。

***(出于全面起见,下面内容提供更详细的解析以解决一些不常见的bug,如果上面内容顺利运行,可以不看下面内容) *** -----------------------------------------------------------------------------------分割线--------------------------------------------------------------------------------------------

卸载

如果没有配置–prefix选项,源码包也没有提供make uninstall,则可以通过以下方式可以完整卸载: 找一个临时目录重新安装一遍,如: $ ./configure --prefix=/tmp/to_remove && make install 然后遍历/tmp/to_remove的文件,删除对应安装位置的文件即可(因为/tmp/to_remove里的目录结构就是没有配置–prefix选项时的目录结构)

注意事项(如果前面内容没有出现问题,那么无需接着看下面内容)

1、如果 在 make 过程中出现 error ,你就要记下错误代码(注意不仅仅是最后一行),然后你可以向开发者提交 bugreport(一般在 INSTALL 里有提交地址),或者你的系统少了一些依赖库等,这些需要自己仔细研究错误代码。 2、可能遇到的错误:make *** 没有指明目标并且找不到 makefile。问题是./configure过程出现问题,没有生成Makefile。重新./configure(如果该命令出现问题,可以依照./configure命令详解修改–本文文末) ,再make。 3、make insatll可能需要你有 root 权限(因为要向系统写入文件),且有些软件需要先运行 make check 或 make test 来进行一些测试。

make命令详解

make all:产生我们设定的目标,即此范例中的可执行文件。只打make也可以,此时会开始编译原始码,然后连结,并且产生可执行文件。 make install:将程序安装至系统中。如果原始码编译无误,且执行结果正确,便可以把程序安装至系统预设的可执行文件存放路径。如果用bin_PROGRAMS宏的话,程序会被安装至/usr/local/bin这个目录。 make clean:清除编译产生的可执行文件及目标文件(object file,*.o)。 make distclean:除了清除可执行文件和目标文件外,把configure所产生的Makefile也清除掉。 make dist:将程序和相关的档案包装成一个压缩文件以供发布。执行完在目录下会产生一个以PACKAGE-VERSION.tar.gz为名称的文件。 PACKAGE和VERSION这两个变数是根据configure.in文件中AM_INIT_AUTOMAKE(PACKAGE,VERSION)的定义。在此范例中会产生test-1.0.tar.gz的档案。 make distcheck:和make dist类似,但是加入检查包装后的压缩文件是否正常。这个目标除了把程序和相关文件包装成tar.gz文件外,还会自动把这个压缩文件解开,执行 configure,并且进行make all 的动作,确认编译无误后,会显示这个tar.gz文件可供发布了。这个检查非常有用,检查过关的包,基本上可以给任何一个具备GNU开发环境-的人去重新编译。

./configure详解

configure是一个shell脚本,它可以自动设定源程序以符合各种不同平台上Unix系统的特性,并且根据系统叁数及环境产生合适的Makefile文件或是C的头文件(header file),让源程序可以很方便地在这些不同的平台上被编译连接。

1、常见选项

./configure --help可以查看configure命令的各个选项解析。

有几位博主的文章提供了./configure命令的选项中文详解,由于过长,不做转载,有需要的读者可以去看一看,链接如下: https://blog.csdn.net/sunjing_/article/details/79146827 https://blog.csdn.net/u010977122/article/details/52959098

2、部分bug处理

错误:NOTICE: PHP message: PHP Warning: PHP Startup: mcrypt: Unable to initialize module Module compiled with module API=20090626 PHP compiled with module API=20121212

当服务器中安装了2个以上的php环境时会出现以上错误,这是由于phpize编译的版本不一致 所以安装扩展的时候 一定要/usr/local/php/bin/phpize #写全phpize的路径 ./configure --with-php-config=/usr/local/php/bin/php-config

参考文献(本文参考文章如下,有需要的读者可以进一步阅读)

https://blog.csdn.net/A18040554844/article/details/110140861?spm=1001.2014.3001.5502 https://www.cnblogs.com/linewman/p/9918640.html https://www.cnblogs.com/tinywan/p/7230039.html https://blog.csdn.net/sunjing_/article/details/79146827 https://blog.csdn.net/u010977122/article/details/52959098

好文链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: