Brett Hall
Brett Hall

Reputation: 275

On a unix/linux system how can I learn more about a mylib.a archive?

In this particular case I'm trying to discover if a mylib.a file is 32 or 64 bit compatible. I'm familiar with ldd for shared objects (mylib.so) but how do I inspect a regular .a archive?

Upvotes: 6

Views: 6013

Answers (4)

ephemient
ephemient

Reputation: 204956

$ objdump -G /usr/lib/libz.a
In archive /usr/lib/libz.a:

adler32.o:     file format elf32-i386

...

$ objdump -G /usr/lib64/libz.a
In archive /usr/lib64/libz.a:

adler32.o:     file format elf64-x86-64

...

$ objdump -G /ppc-image/usr/lib/libz.a
In archive /ppc-image/usr/lib/libz.a:

adler32.o:     file format elf32-powerpc

...

Requires a multilib-capable binutils, but it's pretty straightforward, is it not?

Upvotes: 9

Brett Hall
Brett Hall

Reputation: 275

Standard "nm" and "ar" utilities will give you information about the archive.

To learn about the 32/64 bit ability of the archive use "ar" to extract the .o files inside the mylib.a, then run "file" on the .o files to discover their type including the 32/64 bit usage.

Upvotes: 5

wds
wds

Reputation: 32293

In the general case, I just use the 'file' utility.

Upvotes: 0

JayG
JayG

Reputation: 4459

"nm" and "ar" will give you some information about the library archive.

Upvotes: 13

Related Questions