make与 configure

本文涉及的产品
对象存储 OSS,20GB 3个月
文件存储 NAS,50GB 3个月
日志服务 SLS,月写入数据量 50GB 1个月
简介: 【5月更文挑战第10天】make与 configure。

使用类似 gcc的编译器来进行编译的过程并不简单,因为一套软件并不会仅有一个程序,而是有很多程序代码文件。所以每个主程序与副程序除了均需要写上编译过程的命令外,还需要写上最终的链接程序。如果程序代码少还好,但是类似 WWW服务器软件(例如 Apache),或者是类似核心的源码,动辄数百MB的数据量,编译命令将很大。这个时候,可以使用make命令的相关功能来进行编译过程的命令简化。
当运行make时,make会在当前的目录下搜寻 Makefile(或makefile)文件,而 Makefile里面记录了源码如何编译的详细信息。make会自动地判别源码是否已经改变,而自动升级执行文件,所以,make是软件工程师相当好用的一个辅助工具。
make是一个程序,会去找 Makefile,那么Makefile怎么撰写呢?通常软件开发商都会写一个检测程序来检测使用者的操作环境以及该操作环境是否有软件开发商所需要的其他功能,该检测程序检测完毕后,就会主动地创建Makefile的规则文件。通常检测程序的文件名为 configure或者是 config。
要检测操作环境是因为不同版本的核心所使用的系统调用可能不相同,而且每个软件所需要的相关的函数库也不相同。同时,软件开发商不会仅针对 Linux开发,而是会针对整个 Unix-Like开发。所以也必须要检测该操作系统平台有没有提供合适的编译器才行。一般来说,检测程序会检测的数据如下:
● 是否有适合的编译器可以编译本软件的程序代码。
● 是否已经存在本软件所需要的函数库,或其他需要的相关软件。
● 操作系统平台是否适合本软件,包括 Linux的核心版本。
● 内核的头定义文件 (header include)是否存在(驱动程序必须要的检测)。
由于不同的 Linux distribution的函数库文件的路径、函数库的文件名定义、默认安装的编译器以及内核的版本都有可能不相同,因此理论上,无法在 CentOS 5.x上面编译出二进制程序后,还将它拿到 SuSE上面运行。因为调用的目标函数库位置可能不同,内核版本更不可能相同。所以能够运行的情况微乎其微。同一套软件要在不同的平台上面运行时,必须要重复编译。

目录
相关文章
|
C++
make的路径搜索
make的路径搜索
61 0
|
XML 前端开发 JavaScript
make[1]: Nothing to be done for `all-am'.
make[1]: Nothing to be done for `all-am'.
209 0
make[1]: Nothing to be done for `all-am'.
make[1]: Nothing to be done for `all-am'.
624 0
|
Unix Shell Linux
./configure、make、make install 命令详解
这些都是典型的使用GNU的AUTOCONF和AUTOMAKE产生的程序的安装步骤 一、基本信息 1、./configure 是用来检测你的安装平台的目标特征的。
4157 0
|
JavaScript 前端开发