make与 configure

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

目录
相关文章
|
消息中间件
RabbitMQ消息模型之发布订阅Publish-Subscribe
RabbitMQ消息模型之发布订阅Publish-Subscribe
222 0
RabbitMQ消息模型之发布订阅Publish-Subscribe
|
9月前
|
机器学习/深度学习 自然语言处理 API
阿里云零门槛、轻松部署您的专属 DeepSeek模型体验测试
DeepSeek R1是基于Transformer架构的先进大规模深度学习模型,2025年1月20日发布并开源,遵循MIT License。它在自然语言处理等任务上表现出色,高效提取特征,缩短训练时间。阿里云推出的满血版方案解决了服务器压力问题,提供100万免费token,云端部署降低成本,用户可快速启动体验。虽然回答速度有待提升,但整体表现优异,备受关注。
356 8
|
存储 安全 Java
JDK1.8 新的特性
JDK1.8 新的特性
164 0
|
11月前
|
定位技术
项目干系人沟通技巧:心理学观点
和项目干系人的有效沟通需明确沟通目标、分析干系人影响力及需求,运用心理学效应如框架效应、社会认同、同理心、互惠原则和锚定效应,以促进项目顺利进行。
170 3
|
弹性计算 运维 搜索推荐
阿里云建站方案参考:云服务器、速成美站、企业官网区别及选择参考
随着数字化转型的浪潮不断推进,越来越多的企业和公司开始将业务迁移到云端,而搭建一个专业、高效的企业官网成为了上云的第一步。企业官网不仅是展示公司形象、产品和服务的重要窗口,更是与客户沟通、传递价值的关键渠道。随着阿里云服务器和建站产品的知名度越来越高,越来越多的用户选择阿里云的产品来搭建自己的官网。本文将深入探讨在阿里云平台上,如何选择最适合自己的建站方案:云服务器建站、云·速成美站还是云·企业官网。
628 14
阿里云建站方案参考:云服务器、速成美站、企业官网区别及选择参考
|
负载均衡 网络安全 API
OpenStack核心组件Neutron
【8月更文挑战第4天】
672 9
|
存储 设计模式 JavaScript
vuex底层原理实现方案
【8月更文挑战第10天】vuex底层原理实现方案
205 4
|
SQL 关系型数据库 MySQL
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
1804 0
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的医院门诊信息管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的医院门诊信息管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
131 1
|
机器学习/深度学习 算法 数据挖掘
如何评估模型性能以进行模型选择?
【5月更文挑战第4天】如何评估模型性能以进行模型选择?
458 5

热门文章

最新文章