专栏首页嵌入式大杂烩【Linux笔记】make工程管理工具(一)

【Linux笔记】make工程管理工具(一)

1、如何编译具有多个源码(.c文件)的工程

上一篇笔记写了如何使用gcc的编译命令编译:【Linux笔记】Linux下编译C程序。当源文件较少时,使用gcc编译命令编译就比较方便,在gcc编译命令中依次列出各个源文件就好,比如:

gcc src1.c src2.c src3.c src4.c -o src

src1.c、src2.c、src3.c、src4.c编译生成可执行文件src 。在Linux环境下,一般不具有集成开发环境(IDE),一般都是使用命令来编译。当源文件较少时,可以使用上面的方式进行编译。但是,如果我们的项目代码工程源文件很多,几十个,上百个,甚至上千上万个呢,那么该怎么进行编译呢?这时候,就可以使用工程管理文件——Makefile(makefile)文件对你的工程进行管理,然后使用make工具解释Makefile(makefile)文件中的指令(编译指令)进行我们的项目编译。

2、怎么使用make工具来编译我们的C工程呢

平常,在技术的学习时,我习惯于先把要学的技术、原理用起来,再进一步去了解这个技术、原理,有进一步的学习之后,然后再进一步的去进行应用,即用->学->用

所以,我们先看怎么用make工具的问题。当然,首先得想办法编写Makefile文件。在这之前,我们可以使用make -v命令查看我们当前系统是否具有make工具(本文使用的Linux发行版为红帽6):

可见,我们系统的make工具版本是3.81。我们还是以上一篇笔记的例子,这次我们使用make编译我们的hello文件(输出Hello World是我们千年不变的目标,哈哈~)如下是我们编写的Makefile文件中的内容:

有了Makefile文件,我们就可以编译我们的hello.c文件了,如:

要注意的是我们Makefile文件中的命令前面空白是一个【Tab】键的长度,不能使用空格键代替,否则是会出错的,如:

再或者,想看到我们平时所说的“编译”各个过程,我们可以把Makefile文件修改成:

然后使用make工具进行解释:

其中,关于关于源文件至生成可执行文件经过哪几个过程,可查看往期笔记:

【C语言笔记】C语言编译的过程

以上就是本篇笔记的分享,主要介绍如何使用make工具来编译我们的c工程如有错误,欢迎指出!关于make的内容很多,在之后的笔记中再具体地进行介绍!欢迎大家持续关注!如果你觉得对你有用的话,麻烦帮忙点个赞。如果你觉得对你的同学与朋友也有用的话,欢迎转发。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【C语言笔记】windows命令行下编译C程序

    有关注我的朋友可能会知道我的C开发环境是:Notepad++与MinGW相结合,即用Notepad++写代码,用MinGW这个工具包中的gcc编译器进行编译。如...

    正念君
  • 程序的组成、存储与运行

    一般 MCU 包含的存储空间有:片内 Flash 与片内 RAM, RAM 相当于内存, Flash 相当于硬盘。编译器会将一个程序分类为好几个部分,分别存储在...

    正念君
  • 【C语言笔记】指定初始化器

    C99增加了一个新特性:指定初始化器(designated initializer)。利用该特性可以初始化指定的数组元素,也可以初始化指定的结构体变量(往期笔...

    正念君
  • 【AI白身境】只会用Python?g++,CMake和Makefile了解一下

    在学习CMake和和Makefile之前我们先学下g++这个工具,大家或许会问为什么要学g++,不应该直接学CMake和Makefile吗。实际上如果你不掌握g...

    用户1508658
  • cmake:EXCLUDE_FROM_ALL的用处

    版权声明:本文为博主原创文章,转载请注明源地址。 https://blog.csdn.net...

    用户1148648
  • 低级工具——C语言/C++

    虽然我的公众号以Python方向为主,但是Python运行速度太慢,因为做了太多的底层封装。提高速度可以使用多进程,但是多进程占用系统资源太多,为了减少占用的资...

    不可言诉的深渊
  • Emlog新版一处csrf导致的任意文件删除(可删除全站)

    听说emlog更新到6.0了,下载了一份最新的代码,发现原来的bug还是没有修复。可能是官方没有在意,所以这里简单叙述一下危害。

    周俊辉
  • MySQL show命令整理

    九州暮云
  • .NET之Hangfire快速入门和使用

      定时任务调度问题,是一个老生常谈的问题。网上有许多定时任务调度的解决方案,对于我而言很早以前主要是使用Window计划和Window服务来做任务定时执行,然...

    追逐时光
  • 如果通过一个文件中的行号,来找出另一文件中的所有行?

    假如A文件内容为: 105 126 155 205 206 305 328 339 342 360 另有一B文件,现在要根据A文件中的行号,找出B文件所有对应...

    一见

扫码关注云+社区

领取腾讯云代金券