【问题标题】:how to understand a linker error如何理解链接器错误
【发布时间】:2011-11-18 09:00:04
【问题描述】:

我正在尝试编译具有异国情调混合版本的动态库。 首先,我正在为机器人内部的 ADM geode 进行交叉编译,该工具链使用 gcc-4.3.3 的特定工具链,并且有自己的目录树用于查找其标头和链接库,但我使用了很多数字boost::numeric、blas 等库以及名为 jrl-dynamics 的机器人动态和运动学模型库,这会发送链接器错误。

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

/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文件说链接器要搜索符号???。

【问题讨论】:

    标签: gcc ld elf


    【解决方案1】:

    我认为符号中的@versionning 有关,但我对此不是很熟悉。另见dlvsym

    【讨论】:

      猜你喜欢
      • 2017-04-07
      • 2014-01-10
      • 2011-12-08
      • 1970-01-01
      • 2010-11-01
      • 2016-01-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多