当我在linux中构建我的源代码时,我得到了一个错误
qstring.cpp:(.text+0x2c01): undefined reference to `terminate(void)'
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)
如何解决这个问题呢?
terminate在C++标准库的定义,所以请确保您连接,在假设你使用gcc来编译,你应该使用的.g++可执行文件编译源代码,没有的gcc可执行文件:
g++ source.cc -o output
Run Code Online (Sandbox Code Playgroud)
执行时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
Run Code Online (Sandbox Code Playgroud)
您需要找出哪个目标文件或库存terminate在并将其包含在编译/链接命令中。
如果它位于对象或源文件中,只需按照正常方式将其提供给您的命令gcc(假设您实际上正在使用,如果没有,该方法可能会类似)。 gcc如果它在库中,您应该查看-L(库路径)和-l(库名称)选项。