我正在将 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