rzzm

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

  •  
  •   rzzm · Oct 11, 2023 · 3075 views
    This topic created in 981 days ago, the information mentioned may be changed or developed.
    我是个半吊子 C#程序员, 最近有一个需求是,在树莓派开发板调用 IC 读卡器,
    淘宝卖家发来一份 SDK, 里面没有 ARM32 平台的二进制文件,
    用 make 编译报错:SONAME adding symbols: file in wrong format
    然后我就卡在这里了...

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

    虽然都是 elf 的 so ,具体编译后的 GLIBC 依赖不同,不一定能完全通用。
    mango88
        3
    mango88  
       Oct 11, 2023
    应该是卖家给的程序命名问题,
    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
    2xvaHoK2LGxQ29R5
        4
    2xvaHoK2LGxQ29R5  
       Oct 11, 2023 via Android
    什么是 ARM32?armv6 armv7 armv8 三个指令集都有 32 位的,但是互相不一定兼容啊,要看你具体的平台才行
    404neko
        5
    404neko  
       Oct 11, 2023   ❤️ 1
    这个就是 32 位的

    \linux\arm\arm-linux-gnueabihf-gcc\8.3.0\64-bit\
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2644 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 53ms · UTC 04:49 · PVG 12:49 · LAX 21:49 · JFK 00:49
    ♥ Do have faith in what you're doing.