对于我们的作业,我们有一个list.h
文件和一个list.o
文件,它是编译源list.cpp
。
我有一个 me.cpp
文件,它是 list.h
中声明函数之一的实现,还有一个要测试的 main.cpp
所有这些(它也与作业文件一起给出)
我没有好的 makefile,实际上我的是这样的:
main: LL.o list.o
g++ -c main.cpp LL.o list.o
LL.o : me.cpp list.h
g++ -c me.cpp
list.o : list.h
但是当我使用 make 语句时它返回 g++: warning: LL.o: linker input file unused because linking not done
g++:警告:list.o:链接器输入文件未使用,因为链接未完成
它将我的 me.cpp
文件变成了非常奇怪的东西!
任何人有我应该做什么的建议?
最佳答案
g++ -c
表示“创建 .o
文件,但实际上并不链接。”
当你想构建 main
时你不应该使用这个标志:
main: LL.o list.o main.o
g++ main.o LL.o list.o
这也意味着您应该首先构建 main.o
(在您的 Makefile 中添加 g++ -c main.cpp -o main.o
)
编辑以考虑评论:
您还应该实际构建 LL.o
。您应该将 g++ -c me.cpp
更改为 g++ -c me.cpp -o LL.o
(但操作 me 可能更有意义。 o
代替)
关于c++ - g++ 链接目标文件无法链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20790588/