编译链接专题第1篇-make和makefile介绍

admin 2024年1月22日10:12:23评论12 views字数 1735阅读5分47秒阅读模式

前言

很多非科班出身的工程师对项目的编译链接其实是很不熟悉的(包括作者自己),但是如果我们想自己做项目或者从01实现一个项目,或者想要优化程序,或者要修改memory layout,或者要实现AUTOSAR架构下内存保护,编译链接是必不可少的知识。本着打破沙锅学到底的目的,我们决定从01实现一个Windows操作系统下基于AUTOSAR架构的编译环境,同时为了锻炼我们的代码能力,从01实现一个常用的数据结构库,如果有比较优秀的开源AUTOSAR代码也计划加入进去。计划手写整个工程的makefile使用make工具能直接编译工程,同时编写CMakeLists文件,支持CMake生成makefile文件来编译整个工程。

对编译链工具不熟悉的,可以参考这篇文章:https://blog.51cto.com/xiacaojun/5648507

编译链接专题第1篇-make和makefile介绍

我们将使用的工具:

项目构建生成工具:CMake

编译链接专题第1篇-make和makefile介绍

编译链接专题第1篇-make和makefile介绍

项目构建工具:make

编译链接专题第1篇-make和makefile介绍

编译链接专题第1篇-make和makefile介绍

编译器:

Windosw: gcc/g++

编译链接专题第1篇-make和makefile介绍

编译链接专题第1篇-make和makefile介绍

编译链接专题第1篇-make和makefile介绍

TC3xx: Green Hills (GHS)

关于WindowCMake入门安装请参考这篇文章:Windows下CMake的小白级入门使用教程(hello world)

本文目录

编译链接专题第1篇-make和makefile介绍

注:本文章引用了一些第三方工具和文档,若有侵权,请联系作者删除!

正文

1.什么是make

make是一个应用程序

-- 能够解析源程序之间的依赖关系

-- 根据依赖关系自动维护编译工作

-- 执行宿主操作系统中的各种命令

怎么理解根据依赖关系自动维护编译工作 -- 我们开始编译后,开始是正常在编译,编译到某个地方时报错了,make能保证:开始出错前的正确编译过的文件,在下次重新编译时不在需要再次编译。

2.什么是makefile

makefile时一个描述文件

-- 定义一系列的规则来指定源文件编译的先后顺序

-- 拥有特定的语法规则,支持函数定义和函数调用

-- 能够直接集成操作系统中的各种命令

3.makemakefile的关系

makefile中的描述用于指导make程序如何完成工作;make根据makefile中的规则执行命令,最后完成编译输出。

编译链接专题第1篇-make和makefile介绍

4.最简单的makefile示例

hello:  echo “hello makefile”

hello: 是目标

echo hello makefile: 实现目标所需执行的命令

注意:目标后的命令需要用Tab键(t)隔开,而不是4个空格!

5.make程序的使用示例

make -f mf.txt hello

说明:以hello关键字作为目标查找mf.txt文件,执行hello处的命令。

-f: 告诉make工具,我们通过-f后面所跟上的这个文件来找到要执行的动作,要执行的动作在hello这个地方。

6.make程序的简写实例

make hello

说明:以hello关键字作为目标查找makefile或者Makefile文件,并执行hello处的命令。 make 去查找hello这个目标,如果我们省略了-f知道makefile文件,就会默认去查找名为makefile或者Makefile文件,在当前目录下查找

make

说明:查找makefileMakefile文件中最顶层目标,并执行最顶层目标的命令。

7.编程实例

创建文件:make.txt

编译链接专题第1篇-make和makefile介绍

编写make.txt

#make.txthello:  echo "hello makefile"

编译链接专题第1篇-make和makefile介绍

makefile中所编写的这些内容非常类似于一个程序,make类似于一个解释器了,解释器来解释一个脚本程序。

makefile中编写的是一种脚本程序,它可以被解释执行,解释器就是make了。

修改make.txt文件名为makefile:

编译链接专题第1篇-make和makefile介绍

修改makefile文件中的内容如下:

#makefilehello:  echo "hello makefile"test:  echo "test"

编译链接专题第1篇-make和makefile介绍

8.小结

make只是一个特殊功能的应用程序。

make用于根据指定的目标执行相应的命令。

makefile用于定义目标和实现目标所需的命令。

makefile有特定的语法规则,支持函数定义和调用。

参考资料:

1.狄泰软件唐老师课程

2.专业嵌入式软件开发书籍

End

原文始发于微信公众号(汽车电子嵌入式):编译链接专题第1篇-make和makefile介绍

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年1月22日10:12:23
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   编译链接专题第1篇-make和makefile介绍https://cn-sec.com/archives/2417219.html

发表评论

匿名网友 填写信息