首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >找不到libstdc++?

找不到libstdc++?
EN

Stack Overflow用户
提问于 2014-07-03 14:00:09
回答 1查看 4.5K关注 0票数 0

我从源代码中构建了gcc 4.9.0,并且还计划构建clang3.4.2,但是在libstdc++方面似乎出了问题,因为clang构建包很快,链接器抱怨来自std的各种未定义的引用。

实际上,我随后尝试编译和链接这个琐碎的程序:

代码语言:javascript
复制
#include <iostream>

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

再次命中链接器错误:

代码语言:javascript
复制
/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

(全gcc -v输出),与我的新造币gcc 4.9.0和我的Ubuntu的股票gcc 4.6.3.

libstdc++.so存在于/usr/local/lib64 64中:

代码语言:javascript
复制
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中,并作为-L参数出现在详细的gcc输出中作为collect2的参数。

如何恢复系统的正常运行,并让链接器找到共享库?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-03 14:39:16

从您的评论中可以看出,您是用gcc而不是g++编译的。

不要认为它是一个错误,因为编译进行得很好!显示的是链接器错误。实际上,gcc将告诉ld链接到C标准库,而不是C++标准库。

要解决这个问题,要么直接使用g++,要么通过-lstdc++

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24555769

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档