嵌入式Linux----Makefile语法

📅 2026/7/9 2:35:51
嵌入式Linux----Makefile语法
Makefile脚本首先Makefile是一个非常非常强大的脚本,拿他进行编译可以嘎嘎提高牛马的工作效率.一个成熟的项目并不会仅仅只有自己,肯定会关联众多依赖,这时我们的gcc命令就会变得巨长无比,而懒惰是程序员的优良美德,没人会喜欢在编译的时候敲巨长的命令,不然就不会有更加方便的IDE了核心语法下面是其核心语法格式 ,当然还有很多其他的语法总之非常强大(但是我还是喜欢shell…而makefile也支持内联shell).目标:依赖 编译规则 #注意makefile 命令必须以tab开头在编译的时候需要将文本转换为二进制进行链接(参考上文 库)在调用的时候我们在命令行输入make就可以调用下面是一个最简单的makefile调用例子main:main.c gcc main.c -o main #生成main可执行文件usr:path$make#调用makefile进行编译makefile变量makefile变量定义采用类c方式使用变量采用类shell方式修改上文makefileCCgcc #定义编译器 CXXg TARGETmain #定义生成目标 $(TARGET):main.c $(CC) main.c -o main这样便不用每个需要编译器的命令都修改了文件探测可以探测某个文件的内容是否发生改变从而只编译被修改的文件.修改上文CCgcc #定义编译器 CXXg TARGETmain #定义生成目标 OBJmain.o #定义目标 $(TARGET):$(OBJ) $(CC) $(OBJ) -o $(TARGET)修改编译规则makefile默认的编译规则采用的是默认编译器,而我们要切换编译器的话就需要修改默认规则CCgcc #定义编译器 CXXg TARGETmain #定义生成目标 OBJmain.o #定义目标 $(TARGET):$(OBJ) $(CC) $(OBJ) -o $(TARGET) # 修改编译规则 main.o:main.c $(CC) -c main.c -o main.o添加shell与自动化变量上文的在增加文件时, 进行修改编译规则时依然会很麻烦, 懒惰的前辈依然不喜欢继续添加规则.CCgcc #定义编译器 CXXg TARGETmain #定义生成目标 SRC$(shell find path --type -f --name *.c) #查询指定路径下的所有.c文件 OBJ$(SRC:%.c%.o) #将所有的.c 替换为.o $(TARGET):$(OBJ) $(CC) $(OBJ) -o $(TARGET) # 修改编译规则 $(OBJ):%.o:%.c $(CC) $^ -o $ -c #纳尼成为了看不懂的样子哈哈继续添加其他命令CCgcc #定义编译器 CXXg TARGETmain #定义生成目标 SRC$(shell find path --type -f --name *.c) #查询指定路径下的所有.c文件 OBJ$(SRC:%.c%.o) #将所有的.c 替换为.o $(TARGET):$(OBJ) $(CC) $(OBJ) -o $(TARGET) # 修改编译规则 $(OBJ):%.o:%.c $(CC) $^ -o $ -c #纳尼成为了看不懂的样子哈哈 clean: #简单增加个删除 sudo rm -rf * #嘻嘻