Если вы не удаляли символы, вы можете использовать nm
для просмотра имен объектных файлов (.o
).
$ nm foo.a
foo.a(objectFile1.o):
0000000000000000 T _function1
foo.a(objectFile2.o):
0000000000000000 T _function2
Этот вывод будет отличаться в разных операционных системах.Например, вот вывод символов в libz.a
в системе Ubuntu:
$ nm libz.a | grep ".o:"
adler32.o:
compress.o:
crc32.o:
gzio.o:
uncompr.o:
deflate.o:
trees.o:
zutil.o:
inflate.o:
infback.o:
inftrees.o:
inffast.o:
Каждый из вышеупомянутых 12 .o файлов был единицей перевода в исходном коде, скомпилированном с -c
вариант для gcc.Я использовал grep
, чтобы игнорировать бесчисленные символы, определенные и указанные в каждом из объектных файлов.После компиляции эти объектные файлы были затем объединены в статическую библиотеку с помощью ar
.
ar
также можно извлечь объектные файлы.На том же libz.a
:
$ ar xv libz.a
x - adler32.o
x - compress.o
x - crc32.o
x - gzio.o
x - uncompr.o
x - deflate.o
x - trees.o
x - zutil.o
x - inflate.o
x - infback.o
x - inftrees.o
x - inffast.o
Параметр x
предназначен для извлечения, а v
- подробный, который печатает имя объектного файла при его извлечении.