找不到libstdc ++?

时间:2014-07-03 14:00:09

标签: gcc linker libstdc++

我从源代码构建了gcc 4.9.0,并且还计划构建clang 3.4.2,但是对于libstdc ++来说似乎有些问题,因为clang构建很快就会让链接器抱怨各种未定义的引用来自std。

的确,然后我尝试编译和链接这个简单的程序:

#include <iostream>

int main() {
    std::cout << 42;
}

再次点击链接器错误:

/tmp/ccrptgVW.o:temp.cpp:function main: error: undefined reference to 'std::cout'
/tmp/ccrptgVW.o:temp.cpp:function main: error: undefined reference to 'std::ostream::operator<<(int)'
/tmp/ccrptgVW.o:temp.cpp:function __static_initialization_and_destruction_0(int, int): error: undefined reference to 'std::ios_base::Init::Init()'
/tmp/ccrptgVW.o:temp.cpp:function __static_initialization_and_destruction_0(int, int): error: undefined reference to 'std::ios_base::Init::~Init()'
collect2: error: ld returned 1 exit status

full gcc -v output),我的新鲜gcc 4.9.0和我的Ubuntu的股票gcc 4.6.3。

libstdc ++。存在于/ usr / local / lib64:

ls /usr/local/lib64/libstd*
  /usr/local/lib64/libstdc++.a
  /usr/local/lib64/libstdc++.so
  /usr/local/lib64/libstdc++.so.6.0.20
  /usr/local/lib64/libstdc++.la
  /usr/local/lib64/libstdc++.so.6
  /usr/local/lib64/libstdc++.so.6.0.20-gdb.py

,此目录显示在LIBRARY_PATH中,并作为详细gcc输出中collect2的-L参数。

如何恢复系统的健全性并让链接器找到共享库?

1 个答案:

答案 0 :(得分:1)

根据您的评论,您使用gcc而不是g++进行了汇总 不要把它当作一个错误,因为汇编很好!出现的是链接器错误。实际上,gcc将告诉ld链接C标准库而不是C ++标准库。

要解决此问题,请直接转到g++或通过-lstdc++