Objdump doesn't recognize the architecture of a shared library

1

I built a shared library on Ubuntu 14.04 for ARM platform. The file has compiled and build successfully. I can inspect exported symbols with nm command but when I check .so file header I got the information that architecture is unknown.

Is this library built correctly, why is the library architecture unknown ?

objdump -f libMyLib.so 

libMyLib.so:  file format elf32-little
architecture: UNKNOWN!, flags 0x00000150:
HAS_SYMS, DYNAMIC, D_PAGED
start address 0x000033a0
arm
shared-libraries
objdump
asked on Stack Overflow Sep 28, 2016 by tommyk

1 Answer

0

You need to use the objdump binary provided by the toolchain of your target system (ARM), not from host system(x86_64).

As a example: I have setup a host system Linux x86_64 targeting openwrt mips, my toolchain folder has some files:

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

These are the tools to manipulate programs for openwrt mips system, so instead of just calling objdump, I need to call ./mips-openwrt-linux-gnu-objdump -f <bin file> to read and get the proper output for the compiled file.

answered on Stack Overflow Apr 10, 2021 by charles

User contributions licensed under CC BY-SA 3.0