我正在将Xilinx Zynq板从Vivado (gnueabi)工具链(来自CodeSourcery 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一起正常工作。但不同之处可能在于所使用的语言之外的其他方面。
你好,伊兹托克·杰拉斯
发布于 2016-09-23 02:29:03
这个问题没有简单的答案,最后我在QEMU模拟的ARM环境中从交叉编译切换到本机编译器。这是由不同的Raspberry PI用户建议的。另一方面,每一个交叉编译器的解决方案都会暴露出一组新的问题。
https://stackoverflow.com/questions/31382759
复制相似问题