V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
rzzm
V2EX  ›  Raspberry Pi

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

  •  
  •   rzzm · 2023-10-11 19:26:33 +08:00 · 1803 次点击
    这是一个创建于 408 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我是个半吊子 C#程序员, 最近有一个需求是,在树莓派开发板调用 IC 读卡器,
    淘宝卖家发来一份 SDK, 里面没有 ARM32 平台的二进制文件,
    用 make 编译报错:SONAME adding symbols: file in wrong format
    然后我就卡在这里了...

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

    虽然都是 elf 的 so ,具体编译后的 GLIBC 依赖不同,不一定能完全通用。
    mango88
        3
    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
        4
    kangyue9999  
       2023-10-11 22:43:31 +08:00 via Android
    什么是 ARM32?armv6 armv7 armv8 三个指令集都有 32 位的,但是互相不一定兼容啊,要看你具体的平台才行
    404neko
        5
    404neko  
       2023-10-11 23:06:38 +08:00   ❤️ 1
    这个就是 32 位的

    \linux\arm\arm-linux-gnueabihf-gcc\8.3.0\64-bit\
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2644 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 10:20 · PVG 18:20 · LAX 02:20 · JFK 05:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.