如何理解链接器错误

时间:2011-11-18 09:00:05

标签: gcc ld elf

我正在尝试使用异乎寻常的混合版本编译动态库。 首先,我正在为机器人内部的ADM geode进行交叉编译,使用gcc-4.3.3的特定工具链,并且有自己的目录树来查找其标题和链接库,但我使用了大量的数字库如boost :: numeric,blas,以及一个名为jrl-dynamics的机器人动态和kininematic模型库,它们会发送链接器错误。

当我编译时,首先,生成所有目标文件都没有问题(因为我破解了工具链包括制作符号链接),但在链接时我遇到了如下错误:

/usr/lib/liblapack.so.3gf.0: undefined reference to `_gfortran_string_len_trim@GFORTRAN_1.0'
/usr/lib/liblapack.so.3gf.0: undefined reference to `_gfortran_concat_string@GFORTRAN_1.0'

/usr/lib/libjrl-dynamics.so.1.19.3-42-g8c6f: undefined reference to `std::ctype<char>::_M_widen_init() const@GLIBCXX_3.4.11'

我希望强制链接器找到像_gfortran_string_len_trim y my这样的符号 请求版本的gfortran是gfortran2,实际上有了reafelf命令我找到了lapack要求的所有simbol。但-L / mypath / gfortran2不起作用!!我得到了同样的错误。 我想知道链接器错误中@的含义是什么,其中elf文件说链接器会搜索符号???。

1 个答案:

答案 0 :(得分:0)

我认为符号中的@versionning有关,但我对此并不十分熟悉。另请参阅dlvsym