linux下编译c源码configure,make,make install等

来源:互联网 发布:无限刷微信红包软件 编辑:程序博客网 时间:2024/06/05 14:43

参考:
https://m14.cc/magic-behind-compiling-software/
https://my.oschina.net/surjur/blog/349464

configure, make, make install

  • ./configure表示运行当前目录下的configure文件,是一个shell脚本,用来在安装前对系统进行检查,确认系统是否具备了编译软件所需的各种条件。以C语言为例,confugure脚本会确认系统是否有编译软件所需的编译器,以及所需的各种头文件和库等。
    如,
./configure --prefix=/usr

意思是将软件安装在/usr目录下面,可执行文件就会安装在/usr/bin下(而不是默认的/usr/local/bin),而资源文件就会安装在/usr/share下(而不是默认的/usr/local/share下)。
有一些软件还可以加上--with、--enable、--without、--disable等参数对编译加以控制,可以通过./configure --help来查看详细的说明。
- make这一步就是编译。不加参数的make的作用就是从当前目录下的Makefile文件中读取指令,对源代码进行编译。
- make install这条命令用来进行安装,这一步一般需要有root权限(因为要向系统写入文件)。光编译的源码还不够,编译生成的二进制文件还和源码呆在同一个文件夹内,我们需要将它们放到具体的目录内才能正确地运行。至于放到哪个目录下也是通过makefile文件的指令来确定的。install不是make的参数,而是在makefile(Makefile)文件中有向install:这样的语句。如果用make install,那么执行install:后面的语句。
(以下来自openkeeper-cli的makefile文件)
这里写图片描述

关于makefile文件:
『makefile是用于自动编译和链接的。一个工程有很多文件组成,每一个文件的改变都会导致工程的重新链接,但不是所有文件都需要重新编译,makefile能够记录文件的信息。决定在链接的时候需要重新编译哪些文件。在类unix系统下,makefile是与make命令配合使用的。』

make与automake的关系

make 是一个工具程序,经常读取makefile文件,用于自动化构建软件;
automake是一种编程工具,可以产生供make程序使用的makefile。

0 0