GNU make中文手册-第一章:概述

GNU Make中文手册:自动化构建的精粹 GNU Make 是一个用于自动编译和构建程序的工具,广泛应用于软件开发领域。Make 通过读取名为 Makefile 的文件来执行编译任务,Makefile 中定义了一系列的规则,这些规则指导 make 如何根据文件的时间戳来构建目标文件,从而只重新编译更新过的文件,这对于提高开发效率和自动化构建流程至关重要。 阅读详情

GNU make中文手册-第一章:概述

关键词: GNU make中文手册-第一章:概述

第一章:概述

1.1 make概述
Linux环境下的程序员如果不会使用GNU make来构建和管理自己的工程,应该不能算是一个合格的专业程序员,至少不能称得上是Linux程序员。在Linux环境下使用GNU 的make工具能够比较容易的构建一个属于你自己的工程,整个工程的编译只需要一个命令就可以完成编译、连接以至于最后的执行。不过这需要我们投入一些时间去完成一个或者多个称之为Makefile文件的编写。此文件正是make正常工作的基础。

所要完成的Makefile文件描述了整个工程的编译、连接等规则。其中包括:工程中的哪些源文件需要编译以及如何编译、需要创建那些库文件以及如何创建这些库文件、如何最后产生我们想要得可执行文件。尽管看起来可能是很复杂的事情,但是为工程编写Makefile的好处是能够使用一行命令来完成“自动化编译”,一旦提供一个(多个)正确的Makefile。编译整个工程你所要做的唯一的一件事就是在shell 提示符下输入make命令。整个工程完全自动编译,极大提高了效率。

make是一个命令工具,它解释Makefile中的指令(应该说是规则),Makefile中描述了工程中所有文件的编译顺序、规则。Makefile有自己的书写格式、关键字、函数。像C语言有自己的格式、关键字和函数一样。而且在Makefile中可以使用shell所提供的任何命令来完成你想要的工作。Makefile(在其它的系统上可能是另外的文件名)在绝大多数的IDE开发环境中都在使用,已经成为一种工程的编译方法。

目前,系统完整的介绍make工具和如何编写Makefile的中文文档比较少。我整理这个文档就是希望能使众多的Linux环境下的程序员能够比较容易的掌握和学会使用它。本文所要介绍的是GNU的make,采用Red Hat FC3(包括最新发布的GNU Linux系统)所集成的GUN make工具。

本文后续所用到的所有例子都采用C语言书写的源程序,因为它是目前最普遍使用的一种语言。当然make工具不仅仅是用来管理C语言工程的,那些编译器只要能够在shell下运行的语言所构建的工程都可以使用make工具来管理。而且也可以使用make工具来做一些其它的事。例如,有这样的需求:当我们修改了某个或者某些文件后,需要能够根据修改的文件来自动对相关文件进行重建或者更新。那么应该考虑使用GNU make工具。GNU make工具为我们实现这个目的提供了非常有利的支持。工程中根据源文件的修改情况来进行代码的编译正是使用了make的这个特征。make执行时,根据Makefile的规则检查文件的修改情况,决定是否执行定义的动作(那些修改过的文件将会被重新编译)。这是GNU make的执行依据。



1.2 准备知识
在开始我们关于make的讨论之前,首先需要明确一些基本概念:

编译:把高级语言书写的代码转换为机器可识别的机器指令。编译高级语言后生成的指令虽然可被机器识别,但是还不能被执行。编译时,编译器检查高级语言的语法、函数与变量的声明是否正确。只有所有的语法正确、相关变量定义正确编译器就可以编译出中间目标文件。通常,一个高级语言的源文件都可对应一个目标文件。目标文件在Linux中默认后缀为“.o”(如“foo.c”的目标文件为“foo.o”)。

为了和规则的目标文件相区别。本文将编译高级语言后生成的目标文件成为.o文件。

链接:将多.o文件,或者.o文件和库文件链接成为可被操作系统执行的可执行程序。链接器不检查函数所在的源文件,只检查所有.o文件中的定义的符号。将.o文件中使用的函数和其它.o或者库文件中的相关符号进行合并,最后生成一个可执行的程序。“ld”是GNU的链接器。

静态库:又称为文档文件(Archive File)。它是多个.o文件的集合。Linux中静态库文件的后缀为“.a”。静态库中的各个成员(.o文件)没有特殊的存在格式,仅仅是一个.o文件的集合。使用“ar”工具维护和管理静态库。

共享库:也是多个.o文件的集合,但是这些.o文件时有编译器按照一种特殊的方式生成。对象模块的各个成员的地址(变量引用和函数调用)都是相对地址。因此在程序运行时,可动态加载库文件和执行共享的模块(多个程序可以共享使用库中的某一个模块)。

参考 info ld了解更加详细的关于ld的说明和用法。

【作者: Liberal】【访问统计:】【2006年04月1日 星期六 16:49】【 加入博采】【打印】

GNU Make 使用手册:中译版深度解析 make工具起源于1977年,由Stuart Feldman创建,它最初是为了简化Unix操作系统中C程序的编译过程。它的工作原理是通过读取Makefile文件中的规则来自动化软件的构建过程,包括编译、链接等。在大型项目中,这一点尤其重要,因为它可以显著提高开发效率和准确性。目标是需要被构建的文件名或者是执行的任务名。通常情况下,目标对应于程序中的可执行文件或者库文件。目标可以是一个程序的最终产物,也可以是一个中间过程中的产物。比如,在C/C++项目中,目标通常是一个二进制可执行文件或库文件。 阅读详情

相关推荐

GNU make 中文手册详解与实战指南

目标与依赖构成了 Makefile 规则的基石。每一个规则本质上是一个条件触发器:当某个目标文件缺失或其任意一个依赖文件比它更新时,就执行对应的命令序列来重建该目标。这种基于时间戳的增量构建机制极大提升了大型项目的编译效率,避免了不必要的重复工作。面对 makefile 的脆弱格式要求,开发者应形成以下习惯:- 编辑器永久设置 Tab 优先- 提交前运行检查- 在项目根目录放置脚本- 文档化格式规范供新人参考。

weixin_42466857的博客 573

Gnu make 中文手册 《第一章:概述》

1.1 make概述Linux环境下的程序员如果不会使用GNU make来构建和管理自己的工程,应该不能算是一个合格的专业程序员,至少不能称得上是Unix程序员。在Linux(unix)环境下使用GNU 的make工具能够比较容易的构建一个属于你自己的工程,整个工程的编译只需要一个命令就可以完成编译、连接以至于最后的执行。不过这需要我们投入一些时间去完成一个或者多个称之为Makefile文件的

文逗 814

Flowable任务节点动态预测:基于任务ID与参数获取下一节点及候选分配策略

本文深入探讨了Flowable工作流引擎中任务节点动态预测功能的实现。通过解析任务ID与运行时参数,模拟流程执行路径,精准预测下一节点及候选用户/组集合,从而提升用户体验与系统透明度。核心在于利用自定义命令实现表达式求值,并深度解析候选者分配策略,确保预测结果与实际流程执行一致。

nnn11的博客 742

《GNU make中文手册》资源下载介绍

《GNU make中文手册》资源下载介绍 【下载地址】GNUmake中文手册资源下载介绍 《GNU make中文手册》是徐海兵先生翻译的GNU make官方文档,全面系统地介绍了make工具的使用方法、Makefile编写规则及相关变量和函数。本手册涵盖了从Makefile基本组成到隐含规则、条件执行、内嵌函数等高级用法...

gitblog_06774的博客 753

普通人如何上岸华为OD-面试总结

总共有3道算法题,100分值的两道,200分值的一道,不同的毕业院校和专业,通过机试的分值不一样,最少需要150分通过,提前和hr联系,了解自己需要多少分通过。重中之重:哪怕你是背的题库,也请你一定不要直接抄原来的,最好是变更下方法名,否则会判定你重复率过高,从而失去后面的面试机会(实在是不会做再用此方法,凑分数所用,面试官能看到你的代码,会影响你的面试评价)本人女,所以还问道了婚育计划,有对象这点可以说,没有问题,但是如果可以的话,生孩子的时间,可以给hr说这几年不考虑。如果说没有难题,直接就挂了。

weixin_47767264的博客 5456

攻克JESD204B多ADC同步:从时钟对齐到数据对齐的实战解析

本文深入解析了JESD204B多ADC同步的系统性挑战与实战解决方案。从确保设备时钟同源、精确捕获SYSREF信号,到管理接收端弹性缓冲区与释放点,文章提供了从时钟对齐到数据对齐的完整调试路径与排查清单,是攻克高速数据采集系统中多片ADC同步难题的实用指南。

weixin_29231725的博客 197

GNU Make 使用手册(中译版)

GNU Make 使用手册(中译版)

m0_49236123的博客 1672

国产HDMI2.0芯片GSV2011怎么选?手把手教你用它设计音视频采集卡(附FPGA/海思对接指南)

本文详细解析国产HDMI2.0芯片GSV2011在音视频采集卡设计中的应用,涵盖芯片选型、硬件设计要点及与FPGA/海思平台的对接指南。GSV2011凭借4K@60Hz支持、音频提取嵌入功能和高集成度,成为音视频设备的核心选择,助力开发者快速实现高性能采集卡设计。

weixin_30181209的博客 335

【亲测免费】 深入探索GNU Make:《GNU-Makefile中文手册-Ver3.8》推荐

深入探索GNU Make:《GNU-Makefile中文手册-Ver3.8》推荐 【下载地址】GNU-Makefile中文手册-Ver3.8 本资源文件为《GNU-Makefile中文手册-Ver3.8.pdf》,是对“info make”的翻译整理。本书不是一个纯粹的语言翻译版本,其中对GNU make的一些语法和用法...

gitblog_06618的博客 1062

ArcGIS基础:CAD数据转换为GIS数据(符号化显示、数据转换、线转面、空间连接)

1、符号化显示: CAD数据加载进来有很多列表,包含了点【point】、线【polyline】、面【polygon】、标注数据【Annotation】等数据,本次实验我们需要用到的是面数据,也就是.dwgPolygong格式的数据。如下图所示: 把数据加载进来,然后在2处打开属性表,查看CAD数据的属性表,打开后可以发现【layer】图层表示就是地块的用地性质,它就是符号化显示的依据。 我们在数据上右键【属性】,打开图层属性,找到【符号系统】,选择类别中的【唯一值】,然后在【值字段】下拉选择【layer】,

yuanYW7556的博客 2万+

车载测试实战:adb logcat日志高效抓取与问题定位技巧

本文详细介绍了车载测试中adb logcat日志的高效抓取与问题定位技巧。作为车载测试的“第一现场”,adb logcat能实时、精准地抓取系统与应用日志,是定位应用崩溃、ANR及功能异常等问题的关键工具。文章从环境搭建、核心命令组合拳到实战分析与自动化脚本,提供了完整的操作指南,帮助测试人员快速掌握这一必备技能,大幅提升问题排查效率。

ii567的博客 1040

GNU Make 使用手册(中译版) - 于凤昌翻译

GNU Make 使用手册(中译版) - 于凤昌翻译 【下载地址】GNUMake使用手册中译版-于凤昌翻译分享 本仓库提供了一份由**于凤昌**翻译的《GNU Make 使用手册(中译版)》资源文件。该手册是GNU Make工具的官方文档的中文翻译版本,旨在帮助中文用户更好地理解和使用GNU Make工具 ...

gitblog_06663的博客 1191

Qt6导航组件系列专栏:30+常见导航场景的实现

本文介绍了Qt6导航组件系列专栏,涵盖30+常见导航场景的实现方案。专栏分为7组:基础侧边栏系列、社交与协作导航系列、文件与项目导航系列、工业与车载导航系列、创意与扩展导航系列、办公与效率导航系列、流程与引导导航系列。

u011186532的专栏 1133

Linux GNU-make中文手册:项目管理的好助手

Linux GNU-make中文手册:项目管理的好助手 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在现代软件开发领域,项目管理和构建自动化是提高效率、确保质量的关键因素。Linux GNU-make中文手册项目正是一款专注于提高开发者构建自动化能力的开源项目。它提供了《Linux GNU-make中文手册(高清带目录).pdf》的下载资源,详尽地介绍了GNU-ma...

gitblog_06733的博客 766

道路缺陷检测实战指南:基于YOLOv11的深度学习系统从搭建到落地

道路缺陷检测项目的每一步,都是“理论→实践→反思→优化”的成长循环。当你看到自己开发的系统能精准识别出道路上的每一处裂缝、每一个坑洼时,那种“技术解决真实问题”的成就感,会让你明白深度学习不止是论文里的公式,更是改变行业的工具。如果过程中遇到模型不收敛、界面功能异常等问题,不妨把问题拆解成“数据是否标注准确?”“模型参数是否合理?”“界面逻辑是否有漏洞?”等小问题逐一排查。记住,每解决一个问题,你就离“能独立落地AI项目的工程师”更近一步。

LXY_LOVE36的博客 172

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

GNU make中文手册 学习总结摘要

本文主要参考 GNU make中文手册 做一些简单的摘抄总结。

黄老板的专栏 1722

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

【免费下载】 探索GNU Make的奥秘:于凤昌翻译的《GNU Make 使用手册(中译版)》

探索GNU Make的奥秘:于凤昌翻译的《GNU Make 使用手册(中译版)》 【下载地址】GNUMake使用手册中译版-于凤昌翻译分享 本仓库提供了一份由**于凤昌**翻译的《GNU Make 使用手册(中译版)》资源文件。该手册是GNU Make工具的官方文档的中文翻译版本,旨在帮助中文用户更好地理解和使用GNU ...

gitblog_06682的博客 751

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

GNU Make 使用手册(中译版)pdf下载

GNU Make 使用手册(中译版)pdf下载 【下载地址】GNUMake使用手册中译版pdf下载 GNU Make使用手册(中译版)为中文用户提供了全面且易于理解的GNU Make指南。手册详细介绍了Make的安装、配置及使用方法,深入讲解了Makefile的编写规则、内置函数和变量的应用,帮助开发者高效管理构建流程。...

gitblog_06711的博客 517

《GNU make中文手册-v3.80》PDF下载介绍

《GNU make中文手册-v3.80》PDF下载介绍 【下载地址】GNUmake中文手册-v3.80PDF下载介绍 《GNU make中文手册-v3.80》是一本深入解析GNU make工具的专业指南,专注于Makefile规则的编写与应用。本书详细介绍了make工具的基本原理、显示与隐式规则,以及变量与函数在Make...

gitblog_06757的博客 400

Linux GNU-make中文手册

Linux GNU-make中文手册 去发现同类优质开源项目:https://gitcode.com/ 此仓库提供了《Linux GNU-make中文手册(高清带目录).pdf》的下载资源。这是一份关于GNU-make的详细使用说明,内容涵盖了如何编写makefile文件。 makefile是工程编译规则的核心,它决定了工程项目中各类文件的编译顺序。在一个复杂的工程项目中,源文件通常会按照类型、功...

gitblog_06732的博客 302

《GNU_Make 中文手册》笔记之一

第一章 概述

Johnson的技术博客 8125

GNU make手册.pdf

GNU make手册.pdf 去发现同类优质开源项目:https://gitcode.com/ 此仓库提供了一份GNU make的中文手册资源,名为“GNU make手册.pdf”。GNU make是一个广泛使用的构建自动化工具,用于自动化构建过程,它通过读取名为Makefile的文件来决定哪些文件需要更新,以及如何更新它们。 本手册详细介绍了GNU make的使用方法,包括基础概念、命令行选项、...

gitblog_06720的博客 476

GNU make 中文手册 第一二章 概述与介绍

一、第一章:概述 准备知识 在开始我们关于 make 的讨论之前,首先需要明确一些基本概念: 编译:把高级语言书写的代码,转换为机器可识别的机器指令。编译高级语言后生成的指令虽然可被机器识别,但是还不能被执行。编译时,编译器检查高级语言的语法、函数与变量的声明是否正确。只有所有的语法正确、相关变量定义正确,编译器就可以编译出中间目标文件。通常,一个高级语言的源文件都可对应一个目标文件。目标文件在 Linux 中默认后缀为 “.o”(如 “foo.c” 的目标文件为 “foo.o” )。为了和规则的目标文件相

weixin_42109053的博客 1155

gnu make 手册_GNU C参考手册

gnu make 手册When we program in C, a C reference by hand is usually useful. The GNU C Reference Manual provides us a good reference for the C programming language implemented by the GNU C Compiler. 当我们用...

cuma2369的博客 669

【亲测免费】 GNU Makefile中文手册下载仓库

GNU Makefile中文手册下载仓库 【下载地址】GNUMakefile中文手册下载仓库分享 本仓库提供了一个重要的资源文件下载——《GNU Makefile中文手册》。该手册是学习和理解GNU Make工具的重要参考资料,尤其对于C/C++程序员来说,掌握Makefile的编写技巧是构建高效自动化编译环境的关键 ...

gitblog_06591的博客 451
上一篇: GNU make中文手册-第三章:Makefile 总述
下一篇: GNU make中文手册-第四章:Makefile的规则
f5key
博客等级 码龄19年 20粉丝 527原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值