我刚刚在我的华硕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 Package Manager。在升级之前,Ubuntu提供了GCC 4.4,尽管我还通过另一个存储库安装了GCC 4.5(gcc-4.5)。 GCC 4.5现在是Ubuntu 11.04的默认设置。
我认为问题可能与libgcc有关。我尝试重新安装GCC,但是我无法删除libgcc:首先,Synaptic Package Manager报告说某处有破坏的软件包,并停止了我的尝试;但我也注意到删除libgcc几乎需要删除所有应用程序,包括apt和Firefox。
我也尝试了gcc-snapshot包;不幸的是,它给出了上面列出的相同错误。
有没有办法使用Synaptic Package Manager获取最新的G ++工作版本?
答案 0 :(得分:0)
操作词: - 重新安装
sudo apt-get install libstdc++ --reinstall
添加您怀疑已损坏的所有包
答案 1 :(得分:0)
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。