如何将一份 C 源代码编译出 ARM32 平台的.so 文件

2023-10-11 19:26:33 +08:00
 rzzm
我是个半吊子 C#程序员, 最近有一个需求是,在树莓派开发板调用 IC 读卡器,
淘宝卖家发来一份 SDK, 里面没有 ARM32 平台的二进制文件,
用 make 编译报错:SONAME adding symbols: file in wrong format
然后我就卡在这里了...

链接: https://pan.baidu.com/s/1TJ6necg1TUtGsprcHK0v5w?pwd=3dsu 提取码: 3dsu
1777 次点击
所在节点    Raspberry Pi
5 条回复
ysc3839
2023-10-11 21:16:27 +08:00
看上去 linux/arm/arm-linux-gnueabihf-gcc/8.3.0/64-bit/里面就是 ARM32 的 binaries
而且里面也没有给 SDK 的源代码,代码都是些示例程序
tool2d
2023-10-11 21:38:32 +08:00
android 是 arm, 树莓派是 arm ,ubuntu 也可以是 arm 。

虽然都是 elf 的 so ,具体编译后的 GLIBC 依赖不同,不一定能完全通用。
mango88
2023-10-11 22:18:27 +08:00
应该是卖家给的程序命名问题,
file ./arm/arm-linux-gnueabihf-gcc/8.3.0/64-bit/libcomPro.so
---
./arm/arm-linux-gnueabihf-gcc/8.3.0/64-bit/libcomPro.so: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), dynamically linked, with debug_info, not stripped

file ./arm/aarch64-linux-gnu-gcc/libcomPro.so
---
./arm/aarch64-linux-gnu-gcc/libcomPro.so: ELF 64-bit LSB shared object, ARM aarch64, version 1 (SYSV), dynamically linked, BuildID[sha1]=5f808e1324be0501ecf46fd580a5f335d66e29dd, with debug_info, not stripped
kangyue9999
2023-10-11 22:43:31 +08:00
什么是 ARM32?armv6 armv7 armv8 三个指令集都有 32 位的,但是互相不一定兼容啊,要看你具体的平台才行
404neko
2023-10-11 23:06:38 +08:00
这个就是 32 位的

\linux\arm\arm-linux-gnueabihf-gcc\8.3.0\64-bit\

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/981092

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX