我在Ubuntu 14.04上为ARM平台构建了一个共享库。该文件已成功编译和构建。我可以使用 nm 命令检查导出的符号,但是当我检查.so文件头时,我得到了架构未知的信息。
这个库是否正确构建,为什么库架构未知?
objdump -f libMyLib.so
libMyLib.so: file format elf32-little
architecture: UNKNOWN!, flags 0x00000150:
HAS_SYMS, DYNAMIC, D_PAGED
start address 0x000033a0
答案 0 :(得分:0)
您需要使用目标系统 (ARM) 的工具链提供的 objdump 二进制文件,而不是来自主机系统 (x86_64)。
例如:我已经设置了一个针对 openwrt mips 的主机系统 Linux x86_64,我的工具链文件夹中有一些文件:
mips-openwrt-linux-gnu-ar
mips-openwrt-linux-gnu-as
mips-openwrt-linux-gnu-gcc
mips-openwrt-linux-gnu-ld
mips-openwrt-linux-gnu-objdump
mips-openwrt-linux-gnu-nm
这些是为 openwrt mips 系统操作程序的工具,所以我需要调用 ./mips-openwrt-linux-gnu-objdump -f <bin file>
来读取并获取编译文件的正确输出,而不是仅仅调用 objdump。