In LINUX determine if a .a library/archive 32-bit or 64-bit?

cvsdave picture cvsdave · Apr 14, 2011 · Viewed 83.9k times · Source

We distribute in Linux a static lib in both 64-bit and 32-bit versions. When troubleshooting a customer, I would like my diagnostic shell script to quickly eliminate the issue by checking the .a archive file to detetmine whether it is 32 or 64 bit. The methods that occur to me are less than elegant:

  1. extract a .o member and ask the "file" command (e.g., ELF 32-bit etc)

  2. start including a dummy member coded to indicate, e.g. 32bit.o/64bit.o and use "ar -t" to check

I have tried "strings xyz.a | grep 32" but this doesn't work well over versions. Not a heartbreaker problem, but if you know of an elegant solution, I would like to know.

Answer

caf picture caf · Apr 15, 2011

objdump seems like the best way:

objdump -f libfoo.a | grep ^architecture