0

我正在将 Xilinx Zynq 板从 CodeSourcery armel (gnueabi) 工具链(来自 Vivado 2015.2)迁移到 Linaro armhf,因此我们可以安装 Debian/Ubuntu armhf (gnueabihf)。

在尝试共享库时,我们从以下错误中得到下一个dlopen()错误:dlsym()dlerror()

/.../controller.so: undefined symbol: _ZTVN10__cxxabiv119__pointer_type_infoE

如果在使用 CodeSourcery 工具链编译的软件正常工作时使用 Linaro 工具链,则会出现此问题。

我检查了两个库中报告的符号,它存在于两个库中:

$ grep -r cxxabiv119__pointer_type_info .
./controller.so.armel.simbols:U _ZTVN10__cxxabiv119__pointer_type_infoE
./controller.so.armhf.simbols:U _ZTVN10__cxxabiv119__pointer_type_infoE

似乎如果 controller.so 只包含 C 代码(没有 C++ 代码),它可以与 Linaro 一起正常工作。但差异可能与所使用的语言不同。

问候, Iztok Jeras

4

1 回答 1

0

这个问题没有简单的答案,最后我从交叉编译切换到 QEMU 模拟 ARM 环境中的本机编译器。这是由各种 Raspberry PI 用户提出的。另一方面,每个交叉编译器解决方案都发现了一组新问题。

于 2016-09-22T18:29:02.780 回答