0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Linux Makefile的基本使用

CHANBAEK 来源:嵌入式工程师成长日记 作者:嵌入式工程师成长 2023-01-12 17:49 次阅读

文中所使用的Linux版本是:Ubuntu

01 make工具和makefile的引入

当源码文件比较多的时候不适合通过直接输入gcc来编译,需要一个自动化编译的工具

make工具的工作包括:

1.如果只修改了某几个源文件,则只编译这几个源文件

2.如果某个头文件被更改了,则重新编译所有包含该头文件的源文件

make工具主要用于完成自动化编译,make编译时需要makefile文件提供编译文件

02 Vim编辑器操作Makefile

配置Vim编辑器

sudo vi /etc/vim/vimrc

set ts=4——设置Tab键为4个字节

set nu——每行的开头显示行号

(在最下面添加上面两个语句)

图片

使用步骤

(1)六 制作文件

②编辑以下代码:

规则格式:

目标... :依赖文件集合...

命令1

命令2

....

图片

(每条命令必须以Tab开始,不能使用空格)

③输入指令make

④最后输入指令make clean 可以清楚所有的.o文件

图片

03Makefile基本语法

makefile变量的使用

objects = main.o input.o calcu.o

主:$(对象)

GCC -o main $(对象)

图片

赋值“=”

名称 = 管理员1

当前 =$(名称)

名称 = 管理员

打印:

@echo 当前:$(当前)

这里打印的值时admin,而不是admin1,因为打印的是最终变量的值

图片

图片

赋值“:=”

名称 = 管理员1

当前 :=$(名称)

名称 = 管理员

打印:

@echo 当前:$(当前)

这里打印的值时admin1,而不是admin。 这就是和“=”的区别

图片

图片

赋值“? =”

当前 ?=你好

打印:

@echo 当前:$(当前)

//这里打印hello

当前:=管理员

当前?=你好

打印:

@echo 当前:$(当前)

//这里打印的值时admin1,而不是admin。 这就是和“=”的区别

图片

图片

自动化变量

@,%,<,?,^,+,$*

最常用的三个变量:@,<,$^

功能表:

图片

图片

图片

伪目标

伪目标不代表真正的目标名,一般的目标名都是要生成文件,而伪目标不代表真正的目标名,在执行make命令时通过指定这个伪目标来执行其所在规则定义的命令

如果在工作目录下有相同的文件时,需要声明伪目标,例如. PHONY:XXX

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    11219

    浏览量

    208879
  • VIM
    VIM
    +关注

    关注

    0

    文章

    134

    浏览量

    15274
  • 编译
    +关注

    关注

    0

    文章

    652

    浏览量

    32800
  • 编辑器
    +关注

    关注

    1

    文章

    800

    浏览量

    31108
  • Makefile
    +关注

    关注

    1

    文章

    125

    浏览量

    19161
收藏 人收藏

    评论

    相关推荐

    Makefile】C文件包含的头文件修改,但不重新编译?

    Linux + MakefileMakefile的高阶用法:解决C文件包含的头文件修改了,但C文件不重新编译的问题!
    的头像 发表于 09-08 08:53 5238次阅读
    【<b class='flag-5'>Makefile</b>】C文件包含的头文件修改,但不重新编译?

    Linux Makefile通用模板详解

    对于Windows下开发,很多IDE都集成了编译器,如Visual Studio,提供了“一键编译”,编码完成后只需一个操作即可完成编译、链接、生成目标文件。
    发表于 08-08 09:48 831次阅读
    <b class='flag-5'>Linux</b> <b class='flag-5'>Makefile</b>通用模板详解

    #硬声创作季 #LinuxLinux-1.16 make工具和Makefile的引入-1

    LinuxMakefile
    水管工
    发布于 :2022年11月10日 17:19:02

    #硬声创作季 #LinuxLinux-1.17 Makefile基本语法-1

    LinuxMakefile
    水管工
    发布于 :2022年11月10日 17:19:45

    #硬声创作季 #LinuxLinux-1.17 Makefile基本语法-2

    LinuxMakefile
    水管工
    发布于 :2022年11月10日 17:20:08

    #硬声创作季 #LinuxLinux-1.17 Makefile基本语法-3

    LinuxMakefile
    水管工
    发布于 :2022年11月10日 17:20:31

    #硬声创作季 #LinuxLinux-3.05.2 Makefile前期所作的内容-1

    LinuxMakefile
    水管工
    发布于 :2022年11月10日 19:08:02

    #硬声创作季 #LinuxLinux-3.05.2 Makefile前期所作的内容-2

    LinuxMakefile
    水管工
    发布于 :2022年11月10日 19:08:32

    如何解决嵌入式Linux Makefile遇到的问题

    arm-linux-ld -Ttext 0 -Tdata 0xee0此处 -Tdata 0xee0是将数据段开始存放地址指定在0xee0,因为程序编译出来数据段和代码段中间有空余部分,导致最终的bin文件很大,烧写要很长时间。使用这个要注意指定的存放地址,防止数据段将代码段覆盖...
    发表于 12-24 06:26

    基于Linux 2.6内核Makefile分析

    由于Linux的独特优势,使越来越多的企业和科研机构把目光转向Linux的开发和研究上。目前Linux最新的稳定内核版本为2.6.17,但是当今绝大部分对于Linux
    发表于 09-18 19:09 0次下载
    基于<b class='flag-5'>Linux</b> 2.6内核<b class='flag-5'>Makefile</b>分析

    关于Linux 2.6内核Makefile的分析

    [摘要] 由于Linux的独特优势,使越来越多的企业和科研机构把目光转向Linux的开发和研究上。目前Linux最新的稳定内核版本为2.6.17,但是当今绝大部分对于Linux
    发表于 11-02 10:12 1次下载

    linux makefile教程

     什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile
    发表于 11-12 09:11 5295次阅读

    Linux最新2.6内核的Makefile体系详细资料分析

    由于Linux的独特优势,使越来越多的企业和科研机构把目光转向Linux的开发和研究上。目前Linux最新的稳定内核版本为2.6.17,但是当今绝大部分对于Linux
    发表于 09-06 08:00 0次下载

    虚拟机:LinuxMakefile使用for编译多个目标文件

    假如,有很多文件,每个文件都要变成一个单独的目标文件,如果使用makefile的话,最好能用一个 for 循环来做。
    的头像 发表于 06-22 17:40 4601次阅读
    虚拟机:<b class='flag-5'>Linux</b>的<b class='flag-5'>Makefile</b>使用for编译多个目标文件

    Makefile】简单实用的Makefile模板来了

    Linux + Makefile】简单实用的Makefile模板来了
    的头像 发表于 08-31 12:46 1870次阅读
    【<b class='flag-5'>Makefile</b>】简单实用的<b class='flag-5'>Makefile</b>模板来了