当我在linux中构建我的源代码时,出现了类似
的错误qstring.cpp:(.text+0x2c01): undefined reference to `terminate(void)'
collect2: ld returned 1 exit status
如何解决这个问题?
答案 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); }