欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

LInux下C语言源码编译的过程

程序员文章站 2022-07-12 11:36:38
...

源码编译的过程:源码–>预处理–>编译–>汇编–>链接–>执行
大致可分为三步:./configure—>make—>make install

总的来说:make就做了编译汇编的工作,他是根据makefile的文件来编译汇编的;而makefile是configure根据一个叫做makefile.in的模板文件生成的;makefile.in是由一个叫automake的工具生成的,configure是由一个叫autoconf的工具生成的。make install把编译好的文件复制到指定的目录,说到底就是调用了install命令。

详细的说(最近在安装了nginx,所以就用nginx举例):

这三步分别为:
1. ./configure [options]

--help:获得其支持使用的选项
--prefix=/PATH/TO/SOMEWHERE:指定默认安装位置;默认为/usr/local/;
--sysconfdir=/PATH/TO/SOMEWHERE:配置文件安装位置;
--enable-FEATURE[=ARG]:开启指定特性以及安装路径;默认开启时无须指定;
--disable-FEATURE:关闭指定特性;默认关闭时无须指定;
--with-PACKAGE[=ARG]:安装指定依赖包以及其安装路径;
--without-PACKAGE:不安装指定依赖包;

执行configure脚本的作用:
①用户可以通过选项传递参数给configure脚本,以指定启用的功能特性、安装路径等;而configure脚本在执行的过程中会参考用户的指定以及Makefile.in文件生成makefile文件;
②检查程序指定要启用的功能特性所依赖到的外部环境。

—我们指定好安装的路径,加上自己决定的选项:尝试第一次生成Makefile文件:
LInux下C语言源码编译的过程
—我们发现这个过程并没有进行下去,因为有源码编译器GCC未安装,安装完成GCC后,我们再次生成Makefile文件:
LInux下C语言源码编译的过程
LInux下C语言源码编译的过程
—这次又有两个依赖项pcre-devel和 openssl-devel,安转完成后发现终于可以生成Makefile文件了!!
LInux下C语言源码编译的过程
2. make
作用:make会执行真正的编译操作,但make本身并不是编译器,它只是一个项目构建工具,make程序会根据执行configure脚本所生成的makefile(Makefile)文件,并调用所需要用到的编译器(GCC)来构建应用程序。
3. make install
作用:在前面的make程序执行之后,在当前目录下会创建出已编译完成的目标二进制格式的应用程序(包括二进制程序、库文件、配置文件及帮助文档等),而make install则会执行安装操作,即把当前目录下已编译好的程序包(二进制程序、库文件、配置文件及帮助文档等)复制到用户指定的各个目录下。

那么我们做上边这些的前提肯定是先得到官网下载到的源码包(一般是bz2或者是gz形式,包里一般有readme或者是install文档,这里面有关于本源码该如何编译安装,可以仔细看看),接着在linux下解压源码包。

再补充几点:
1. 上面make后,可以使用make clean将编译参数清空,接着重新make;
2.上面configure发现错误,可以使用makedistclean,将configure参数全部清空,接着重新./configure–>make;

相关标签: 源码编译