Prasoon Saurav
Prasoon Saurav

Reputation: 92854

Contents of a static library

I have a static library, say mystaticlib.a. I want to see its contents, such as the number of object files inside it.

How can I do this on gcc?

Upvotes: 79

Views: 101750

Answers (5)

Julian
Julian

Reputation: 41

I just discovered that you can use readelf -a to display the contents of all the object files in a static library.

Invoke the readelf command like this: $ readelf -a mystaticlib.a.

Upvotes: 1

GreenBærg
GreenBærg

Reputation: 155

It just stumbled over this:

You can open an archive (.a) with 7zip. Also works for the object files in the archive. Listing all sorts of contents like .text, .bss, .data, etc. with their offset, length, type, ... Furthermore its possible to unpack all, using a hex editor or notepad++ to view the contents. I tested this with an archive created with GNUToolsARMEmbedded\2018-q4-major\bin\arm-none-eabi- Toolchain and 7Zip 16.04 (64-bit)

Upvotes: 3

Prasoon Saurav
Prasoon Saurav

Reputation: 92854

On gcc, use ar -t.

-t option of the gnu archiver (ar) writes a table of contents of archive to the standard output. Only the files specified by the file operands shall be included in the written list. If no file operands are specified, all files in archive shall be included in the order of the archive.

More info here.

Upvotes: 111

kakyo
kakyo

Reputation: 11590

On a Mac, simply use

nm libschnoeck.a | less

There is no -C option with the Mac version of nm.

Upvotes: 19

Jens Gustedt
Jens Gustedt

Reputation: 78903

You can see the contents (the .o files that went into it) and the defined symbols by using nm. If this contains C++ code you should use the -C option to demangle the symbol names:

nm -C libschnoeck.a | less

Upvotes: 79

Related Questions