如何解决'collect2:ld返回1退出状态'?

时间:2010-11-19 06:03:30

标签: linux hyperlink

当我在linux中构建我的源代码时,出现了类似

的错误
qstring.cpp:(.text+0x2c01): undefined reference to `terminate(void)'
collect2: ld returned 1 exit status

如何解决这个问题?

3 个答案:

答案 0 :(得分:8)

terminate在C ++标准库中定义,因此请确保将其链接到。假设您正在使用gcc进行编译,您应该使用g++可执行文件来编译源代码代码, gcc可执行文件:

g++ source.cc -o output

当以g++执行时,链接器会自动链接到C ++标准库(libstdc ++)中。如果你改为以普通gcc执行gcc,或者你直接调用链接器ld,那么你需要自己添加-lstdc++来链接库中,例如:

gcc source.cc -o output -lstdc++  # Compile directly from source
ld source1.o source2.o -o output -lstdc++  # Link together object files

答案 1 :(得分:2)

您需要找出哪个目标文件或库terminate存在并将其包含在您的编译/链接命令中。

如果它位于对象或源文件中,只需将其提供给gcc(假设您实际上使用 gcc,否则,该方法可能会类似的)命令按照正常情况。如果它在库中,您应该查看-L(库路径)和-l(库名称)选项。

答案 2 :(得分:-2)

void terminate(void) { raise(9); }