【Linux】gcc/g++的使用 自动化构建工具make/makefile的使用

这篇具有很好参考价值的文章主要介绍了【Linux】gcc/g++的使用 自动化构建工具make/makefile的使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一.gcc的使用

在学习C语言时,我们了解了预处理阶段要做的事:->预处理

这其中会经历两个阶段:编译和链接

而编译又分为三个阶段:预编译,编译,汇编

通过不同的选项,可以让gcc停在以上相应的阶段。

   //-o 后面紧跟文件名,当然你也可以命名成其它名字
    gcc -E test.c -o test.i;   //告诉gcc,从现在开始进行程序的翻译,做完预处理工作后就停下来

	gcc -S test.i -o test.s   //从现在开始程序的翻译,编译工作做完后停下

	gcc -c test.c -o test.o   //做完汇编工作后停下
		                     //.o 文件可重定位目标二进制文件,简称目标文件,
		                     //不可以独立执行,需要经过链接才能执行
   
    gcc test.o -o test.exe  //连接,生成可执行文件或库文件


    //如果不想写这么麻烦,可以使用 -o 直接生成可执行文件
   gcc test.c -o test.exe

【Linux】gcc/g++的使用 自动化构建工具make/makefile的使用,Linux,linux,自动化,运维

这里有一个记忆的小窍门,我们电脑左上角的Esc键,顺序刚好和上面的顺序一致,所以不记得的时候,看一眼电脑左上角,不过要记住大小写。

常用选项:

-g  :gcc默认是release版本,是不支持调试的,-g可以生成调试信息,但相应的文件的体积          会变大;

-static: 静态连接,文件体积也会变大

【Linux】gcc/g++的使用 自动化构建工具make/makefile的使用,Linux,linux,自动化,运维

【Linux】gcc/g++的使用 自动化构建工具make/makefile的使用,Linux,linux,自动化,运维 

运行生成的可执行文件: ./test.exe

【Linux】gcc/g++的使用 自动化构建工具make/makefile的使用,Linux,linux,自动化,运维

 

g++和gcc的使用差不多,就不赘述了。

 


二.make/makefile

make 是指令,makefile是文件,两个是配套使用的。

makefile文件格式:

//依赖关系(test是可执行文件,依赖源文件test.c生成,注意这个test.c文件必须在当前目录下 
//能找到
test:test.c    
    gcc test.c -o test;   //依赖方法,就是test.c 到可执行文件的生成方式
clean:             //clean无依赖关系
    rm -rf test;

【Linux】gcc/g++的使用 自动化构建工具make/makefile的使用,Linux,linux,自动化,运维

 

所以我们现在要使用gcc编译生成可执行文件时,只需一次性把代码写到makefile文件里,在使用make命令就可以一件生成了,省去了重复写的麻烦,并且这个make是递归式生成的,所以写依赖关系和依赖方法时,不用担心顺序的问题。

【Linux】gcc/g++的使用 自动化构建工具make/makefile的使用,Linux,linux,自动化,运维

【Linux】gcc/g++的使用 自动化构建工具make/makefile的使用,Linux,linux,自动化,运维

【Linux】gcc/g++的使用 自动化构建工具make/makefile的使用,Linux,linux,自动化,运维

不能重复make? 

可是我们发现一次make后,第二次就不能make了

【Linux】gcc/g++的使用 自动化构建工具make/makefile的使用,Linux,linux,自动化,运维

这是因为make有这样一个规则:

 对于可执行文件和源文件的最后一次修改时间

     若可执行文件新于源文件,则不需要再次编译;

     若可执行文件老于源文件,则重新编译。

键入 stat 可查看文件的各个时间:

【Linux】gcc/g++的使用 自动化构建工具make/makefile的使用,Linux,linux,自动化,运维

 

 项目清理

clean是负责项目清理的,我们希望它总是被执行,所以可以用.PHONY 修饰

.PHONY 是伪目标,伪目标的特性是总是被执行

【Linux】gcc/g++的使用 自动化构建工具make/makefile的使用,Linux,linux,自动化,运维

 

常用符号

$@ :代替依赖关系:的左边

$^ :代替依赖关系:的右边(不管右边有几个文件,都可以用一个$^代替)

@:在依赖方法语句的前面加上@,可以在使用make时,不回显依赖方法的语句

【Linux】gcc/g++的使用 自动化构建工具make/makefile的使用,Linux,linux,自动化,运维

 


🐬🤖本篇文章到此就结束了, 若有错误或是建议的话,欢迎小伙伴们指出;🕊️👻

😄😆希望小伙伴们能支持支持博主啊,你们的支持对我很重要哦;🥰🤩

😍😁谢谢你的阅读。😸😼文章来源地址https://www.toymoban.com/news/detail-540739.html

到了这里,关于【Linux】gcc/g++的使用 自动化构建工具make/makefile的使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Linux】项目自动化构建工具-make和Makefile 的使用和进度条的实现

    什么是makefile 在我们以后的工作环境中,一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作 Linux中提供了自动化

    2024年02月07日
    浏览(57)
  • Linux 自动化构建工具(make/Makefile)

            拼着一切代价,奔你的前程。——巴尔扎克. 本章继续学习Linux常用的工具,make是可以帮我们解决一些重复使用相同指令的冗杂的自动化构建工具。 话不多说安全带系好,发车啦 (建议电脑观看) 。 附:红色,部分为重点部分;蓝颜色为需要记忆的部分(不是死

    2024年02月16日
    浏览(35)
  • 【Linux】-自动化构建工具(make/makefile)

    作者:小树苗渴望变成参天大树 作者宣言:认真写好每一篇博客 作者gitee:gitee 如 果 你 喜 欢 作 者 的 文 章 ,就 给 作 者 点 点 关 注 吧! 今天我们来讲讲再Linux中开发必备的一项技能,没有这个技能就不适合大型项目的开发,虽然后来这个功能会有专门的工具生成,但是

    2024年02月08日
    浏览(44)
  • 【Linux】项目自动化构建工具make/makefile

    🏖️作者:@malloc不出对象 ⛺专栏:Linux的学习之路 👦个人简介:一名双非本科院校大二在读的科班编程菜鸟,努力编程只为赶上各位大佬的步伐🙈🙈 本篇文章我们将要讲解的是项目自动化构建工具make与makefile。 一、make/makefile的背景 会不会写makefile,从一个侧面说明了一

    2024年02月03日
    浏览(43)
  • 【Linux】自动化构建工具-make/Makefile详解

     前言 大家好吖,欢迎来到 YY 滴 Linux系列 ,热烈欢迎! 本章主要内容面向接触过Linux的老铁,主要内容含 欢迎订阅 YY 滴Linux专栏!更多干货持续更新!以下是传送门!  订阅专栏阅读:YY的《Linux》系列 ❀❀❀❀❀ 【Linux系列-P1】 Linux环境的搭建 【Linux系列-P2】Linux的基本知

    2024年02月16日
    浏览(28)
  • 【Linux】项目自动化构建工具 —— make/Makefile

    前言: 在上一期的博文中,我们对 Linux 下的编译器 - gcc/g++的使用进行了详细的讲解,今天我将给大家讲解的是关于  【Linux】项目自动化构建工具 —— make/Makefile  的详细使用教程!! 本文目录 (一)前情摘要 (二)背景介绍 1、Makefile 的基本认识 2、make 的基本认识 3、

    2023年04月19日
    浏览(47)
  • 【Linux】自动化构建工具make和Makefile

           🔥🔥 欢迎来到小林的博客!!       🛰️博客主页:✈️小林爱敲代码       🛰️社区 : 进步学堂       🛰️专栏 : Linux之路       🛰️欢迎关注:👍点赞🙌收藏✍️留言 在一个工程中的源文件不计数,其按类型、功能、模

    2023年04月18日
    浏览(29)
  • 【Linux】项目自动化构建工具 - make/Makefile

    会不会写makefile,从侧面说明了一个人是否具备完成大型工程的能力。 一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的

    2024年02月04日
    浏览(38)
  • 【Linux】项目自动化构建工具-make/Makefile

    会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力 一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂

    2023年04月09日
    浏览(35)
  • Linux---(六)自动化构建工具 make/Makefile

    make是一个命令。 Makefile是一个在当前目录下存在的一个具有特定格式的文本文件。 🎗️会不会写Makefile,从一个侧面说明了一个人是否具备完成大型工程的能力。 🎗️一个工程中的源文件数不胜数,其按照类型、功能、模块分别放在若干个目录中,Makefile定义了一系列的规则

    2024年02月05日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包