如何解决如何链接在不同系统架构上编译的共享库?
我尝试将为 POS 设备(嵌入式 Linux)制作的共享库“libQRCODE.so”与 32 位 arm Linux 链接,但在我的 64 位 Ubuntu 18.04 机器上。我收到此错误:
gcc main.c -L. -lQRCODE -o output
/usr/bin/ld: skipping incompatible ./libQRCODE.so when searching for -lQRCODE
/usr/bin/ld: cannot find -lQRCODE
collect2: error: ld returned 1 exit status
我该如何解决这个问题?
注意:我使用的是最新的 gcc,整个系统是 ANSI C。
解决方法
如何链接在不同系统架构上编译的共享库?
这是不可能的。
您应该在 64 位 Ubuntu 18.04 机器上交叉编译您的库(首选解决方案)或在您的 POS 设备上安装本机编译器。
如果您的 POS 运行某些 MIPS 硬件,请考虑使用 gcc-multilib-mips-linux-gnu
之类的软件包
如果您的 POS 运行一些 ARM 硬件,请考虑在您的 Linux 桌面上使用一些 ARM 模拟器(如 Qemu)。
或者,下载GCC 10的源代码,编译为交叉编译器。
另请参阅 Bismon 静态源代码分析器的源代码。它(内部)有一些交叉编译的例子。
我建议将 -Wall -Wextra
都传递给您的 gcc
[交叉]编译命令。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。