make与 configure

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000 次 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上面运行。因为调用的目标函数库位置可能不同,内核版本更不可能相同。所以能够运行的情况微乎其微。同一套软件要在不同的平台上面运行时,必须要重复编译。

目录
相关文章
|
JavaScript Android开发 Swift
uni-app-x
uni-app-x
303 0
Stable Diffusion生成艺术二维码
Stable Diffusion生成艺术二维码
617 0
|
消息中间件
RabbitMQ消息模型之发布订阅Publish-Subscribe
RabbitMQ消息模型之发布订阅Publish-Subscribe
126 0
RabbitMQ消息模型之发布订阅Publish-Subscribe
|
10月前
|
人工智能 自然语言处理 前端开发
奖项再+1!通义灵码智能编码助手通过可信 AI 智能编码工具评估,获当前最高等级
奖项再+1!通义灵码智能编码助手通过可信 AI 智能编码工具评估,获当前最高等级。
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的医院门诊信息管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的医院门诊信息管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
103 1
|
网络协议 程序员 API
[笔记] Microsoft Windows网络编程《一》WinSock简介(四)
[笔记] Microsoft Windows网络编程《一》WinSock简介(四)
160 0
|
机器学习/深度学习 算法 数据挖掘
如何评估模型性能以进行模型选择?
【5月更文挑战第4天】如何评估模型性能以进行模型选择?
284 5
npm的一些常用命令和被墙问题的解决
npm的一些常用命令和被墙问题的解决
|
安全 编译器 C++
C++从入门到精通:3.2异常处理——掌握C++的异常处理机制,提高程序健壮性
C++从入门到精通:3.2异常处理——掌握C++的异常处理机制,提高程序健壮性
275 0
|
存储 缓存 算法
jvm性能调优实战 - 34十万QPS的社交APP 如何优化GC性能提升3倍?
jvm性能调优实战 - 34十万QPS的社交APP 如何优化GC性能提升3倍?
310 0
jvm性能调优实战 - 34十万QPS的社交APP 如何优化GC性能提升3倍?