求助:g++执行-c生成.o文件时提示“No such file or directory”
问题原因及解决方法
你的错误出在g++命令的参数使用上:
- 当使用
-c参数时,它的作用是只编译源文件生成目标文件,不进行链接,此时你不需要把目标文件名直接跟在-c后面——编译器会把main.o当成需要读取的输入文件,但这个文件还没生成,所以报错"No such file or directory"。
正确的命令写法有两种:
- 让编译器自动生成同名目标文件:
g++ main.cc -c
执行后会自动生成main.o,因为-c模式下,默认输出文件是源文件名替换后缀为.o。
- 显式指定输出的目标文件名(和生成可执行文件时的
-o用法一致):
g++ main.cc -c -o main.o
补充一个适合你的简单Makefile示例
既然你在自学Makefile,这里给一个适配这个HelloWorld项目的Makefile,能自动处理编译和链接:
# 最终目标:生成可执行文件main main: main.o g++ main.o -o main # 生成目标文件main.o main.o: main.cc g++ main.cc -c -o main.o # 清理生成的文件 clean: rm -f main main.o
使用时只需要在项目目录下执行make就能生成可执行文件,执行make clean可以删除生成的文件。
内容的提问来源于stack exchange,提问作者Sébastien DA SILVA
相关产品推荐
相关产品推荐

