自学内容网 自学内容网

Linux(ubuntu)Makefile

一、Makefile简介

Makefile的必要性:嵌入式开发要将Linux移植到开发版上,而开发版没有图形界面。只能用终端,我们可以用gcc,但是很不方便。而Makefile能解决这个问题。

二、Makefile下载

终端输入:sudo apt install -y build-essential

三、Makefile使用

1.新建文件,并命名为Makefile

或者,终端:vim Makefile

2.代码格式:

目标:前置依赖

\t(tab)代码

3.根据main.c和helloworld.c生成main

main.o:main.c helloworld.h

        gcc -c main.c

helloworld.o:helloworld.c helloworld.h

       gcc -c helloworld.c

main:main.o helloworld.o

        gcc main.o helloworld.o -o main

在Makefile输入以上代码后,在下面终端输入make就可以创造make文件

4.删除命令

clean:

        rm main.o helloworld.o

在Makefile输入以上代码后,在下面终端输入make clean就可以把main.o和hello.o文件删除

5.引入变量

设变量名为object

定义变量代码如下

object := main.o helloworld.o

使用变量代码如下

main:$(object)

        gcc $(object) -o main

以上代码和第3节作用一样,也可以根据第4节自行改变。

6.自动推导

假设我们没有main.i main.o helloworld.i helloworld.o等文件,我们可以直接从main.c和helloworld.c自动推导到main,并生成main.i这些文件。

例如直接输入:

main:main.o helloworld.o

        gcc main.o helloworld.o -o main

缺点:我们更改main.c或helloworld.c都能通过make重新编译。但是更改头文件helloworld.h重新编译没有变化。所以在使用时需要把带头文件的命令提出来。

在前面加上:main.o:helloworld.h

7.声明伪目标

clean就是系统一个伪目标,没有这个文件,但是能清除文件。

但是我们如果创建一个文件就叫clean,那么这个清除文件的作用就没了。所以就需要声明clean,代码如下:

.PHONY:clean

8.忽略错误

执行clean后,再次执行就会报错。说这个文件不存在。但是没有什么影响,我们如果不想让塔报错,在rm前面加个-即可。

9.名称对应

main:$(object)

        gcc $(object) -o main

其中,目标是main,

gcc $(object) -o main,也是生成main。

但是生成的文件以gcc这句为主,

如果gcc $(object) -o main123那么生成的就是main123这个文件。

但是我们不要这样,一定要前后对应。


原文地址:https://blog.csdn.net/2301_80339607/article/details/142407368

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!