使用自定义构建的gcc时程序链接失败

时间:2015-03-24 10:57:10

标签: c++ gcc linker

我正在运行fedora 21发行版,默认gcc为4.9。 我在/ usr / local / gcc48中有一个自定义构建的gcc / g ++ 4.8(例如,cuda需要gcc =< 4.8,我使用update-alternatives来选择这个) 到目前为止,我一直在用这个版本4.8编译一些小程序而没有问题。

现在,我获得了一个使用vtk库和其他库的源代码。如果我使用默认的gcc 4.9,cmake并使工作正常。 但是,当使用gcc48时,我得到:

/usr/lib64/vtk/libvtkCommonDataModel.so.1: référence indéfinie vers « std::__throw_out_of_range_fmt(char const*, ...)@GLIBCXX_3.4.20 »
/lib64/libicuuc.so.52: référence indéfinie vers « __cxa_throw_bad_array_new_length@CXXABI_1.3.8 »
collect2: erreur: ld a retourné 1 code d'état d'exécution
CMakeFiles/main.dir/build.make:365: recipe for target '../bin/main'   failed
make[2]: *** [../bin/main] Error 1
CMakeFiles/Makefile2:60: recipe for target 'CMakeFiles/main.dir/all' failed
make[1]: *** [CMakeFiles/main.dir/all] Error 2
Makefile:76: recipe for target 'all' failed
make: *** [all] Error 2

据我所知,这是一个链接器错误,我试图指向LD_LIBRARY_PATH = / usr / local / gcc48 / lib或LD_LIBRARY_PATH = / usr / local / gcc48 / lib64,但我被卡住了。

这里有什么问题?

由于

1 个答案:

答案 0 :(得分:4)

如果您使用英语发布错误消息会很有帮助。

未定义的符号似乎是__cxa_throw_bad_array_new_length。函数__cxa ...来自C ++运行时库。 G ++通常附带它自己的这个库版本,称为libsupc++。我猜想定制的G ++找不到这个库,或者发出了一个不在较新的符号(4.9)libsupc++中的引用。尝试编译自定义版本的G ++附带的libsupc++源代码,并将链接器指向它。您可能还需要为libstdc++执行此操作。

相关问题