【问题标题】:G++ always fails with undefined reference to _Unwind_GetIPInfoG++ 总是因未定义对 _Unwind_GetIPInfo 的引用而失败
【发布时间】:2011-05-02 09:09:02
【问题描述】:

我刚刚在华硕 EeePC 上网本上升级到 Ubuntu 11.04,但 G++ 出现问题。使用 G++ 编译任何程序,即使是简单的“Hello World”,无论是使用 iostream、cstdio 还是 stdio.h,都会失败并显示以下消息:

/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5.2/libstdc++.so: undefined reference to `_Unwind_GetIPInfo@GCC_4.2.0'
collect2: ld returned 1 exit status

我使用 Synaptic 包管理器。在升级之前,Ubuntu 提供了 GCC 4.4,尽管我也通过另一个存储库安装了 GCC 4.5 (gcc-4.5)。 GCC 4.5 现在是 Ubuntu 11.04 的默认设置。

我认为问题可能与 libgcc 有关。我尝试重新安装 GCC,但无法删除 libgcc:首先,Synaptic 包管理器报告某处有损坏的包,并停止了我的尝试;但我也注意到删除 libgcc 需要删除几乎所有应用程序,包括 apt 和 Firefox。

我也尝试了 gcc-snapshot 包;不幸的是,它给出了上面列出的相同错误。

有什么方法可以使用 Synaptic 包管理器来获取 G++ 的最新工作版本?

【问题讨论】:

  • am假设您在升级编译器后重新编译程序?
  • 是的,错误是编译错误。
  • 呃。显然 :) 给我上色很傻
  • @user643722 尝试使用-v g++ 选项进行编译,它提供了大量可能对您的案例有用的信息
  • @user643722 既然您自己找到了原因,那么您发布问题的答案并接受它是公平的:)

标签: linux gcc ubuntu g++ apt


【解决方案1】:

操作词:--reinstall

sudo apt-get install libstdc++ --reinstall

添加您怀疑已损坏的所有软件包

【讨论】:

  • 这给出了很多形式的消息:注意,为正则表达式 'libstdc+' 选择 'libstdc++6' 然后用导致的单词结束:以下包具有未满足的依赖关系:libstdc++6 -4.5-dbg :冲突:libstdc++6-4.4-dbg 但要安装 4.4.5-15ubuntu1。什么是 4.4.5-15ubuntu1?这对我有什么帮助?你知道发生了什么吗?
  • 你可以用libstdc++6 引用名字(我错过了6,sry)。此外,您可以查看是否有未完成的 apt 运行可以使用 sudo apt-get install -f 自动修复
  • 我跑了sudo apt-get install libstdc++6 --reinstall,它建议我首先使用自动删除清除一些包。我这样做了,然后再次运行。同样的错误。我想我“怀疑”g++ 和 libgcc1,但 sudo apt-get install libgcc1 --reinstallsudo apt-get install -f libgcc1 --reinstall 也没有任何改变; g++ 也是如此。
【解决方案2】:

GCC-4.6 在$LIBRARY_PATH 中发现了一个旧的、不兼容的 libgcc.a 版本;就我而言,它也是$LIBRARY_PATH 中的第一个条目。条目是$G95/g95-install/lib/gcc-lib/i686-unknown-linux-gnu/4.0.3/,与 G95 Fortran 编译器有关。前段时间我自己在 .bash_profile 中完成了这项工作,因为当时我经常将 C++ 程序链接到同一目录中的 libfortran.a 库。删除此条目解决了我的问题。将来我会在这种情况下使用 -L 切换到 GCC。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-26
    • 1970-01-01
    • 1970-01-01
    • 2017-08-11
    • 1970-01-01
    • 2010-09-23
    • 1970-01-01
    • 2023-03-16
    相关资源
    最近更新 更多