C语言Makefile编写问题:为lab.c生成不同名matlib.o目标文件报错
问题原因
- 编译命令未指定输出文件名:你写的
gcc -c lab.c默认输出文件为lab.o,并不会生成规则对应的目标文件matlib.o,make执行完命令后找不到对应目标,因此抛出找不到构建规则的报错。 - 冗余且错误的目标定义:顶层
matlib目标依赖了无意义的lab.o,且其构建命令gcc -c matlib.o逻辑错误:-c参数仅用于将源代码编译为未链接的目标文件,传入.o文件执行该命令没有任何作用,如果你只需要生成matlib.o,该目标可以直接删除。
修正方案
如果你的需求仅为从lab.c生成名为matlib.o的未链接目标文件,使用以下最简Makefile即可:
matlib.o: lab.c lab.h gcc -c lab.c -o matlib.o
执行make matlib.o命令即可生成对应文件。
如果你后续需要将matlib.o链接为名为matlib的可执行文件,可以使用以下完整写法:
# 生成最终可执行文件 matlib: matlib.o gcc matlib.o -o matlib # 生成自定义名称的目标文件 matlib.o: lab.c lab.h gcc -c lab.c -o matlib.o # 清理规则,可选 clean: rm -f matlib.o matlib
内容的提问来源于stack exchange,提问作者Ludwig
相关产品推荐
相关产品推荐

