Это невозможно, так как все классы в пакете могут не загружаться, тогда как вы всегда знаете пакет класса.
.o
файлы являются объектами. Они - вывод компилятора и входа компоновщику/библиотекарю.
.a
файлы являются архивами. Они - группы объектов или статические библиотеки и также вводятся в компоновщика.
Дополнительное содержание
Я не заметил часть "в качестве примера" Вашего вопроса. Обычно Вы будете использовать make-файл для генерации статических библиотек.
AR = ar
CC = gcc
objects := hello.o world.o
libby.a: $(objects)
$(AR) rcu $@ $(objects)
%.o: %.c
$(CC) $(CFLAGS) -c $< -o $@
Это скомпилирует hello.c
и world.c
в объекты и затем архивируют их в библиотеку. В зависимости от платформы Вы, возможно, также должны выполнить названную утилиту ranlib
генерировать оглавление на архиве.
Интересное примечание стороны: .a
файлы являются технически архивными файлами и не библиотеками. Они походят на zip-файлы без сжатия, хотя они используют формат файла значительно старше. Оглавление, сгенерированное утилитами как ranlib
то, что делает архив библиотекой. Архивные файлы Java (.jar
) подобны в этом, они - zip-файлы, которые имеют некоторые специальные структуры каталогов, созданные Java archiver.
.o файл является результатом компиляции единственной единицы компиляции (по существу файл исходного кода, со связанными заголовочными файлами), в то время как.a файл является одним или несколькими.o файлами, упакованными как библиотека.
Ответ D Shawley хорош, я просто хотел добавить несколько точек, потому что другие ответы отражают неполное понимание того, что продолжается.
Имеют в виду, что архивные файлы (.a) не ограничиваются содержанием объектных файлов (.o). Они могут содержать произвольные файлы. Не часто полезный, но видят , динамический компоновщик dependenciy информация встроил в архив для глупого приема компоновщика.
Также уведомление, что объектные файлы (.o) являются не обязательно результатом единственной единицы компиляции. Возможно частично связать несколько меньших объектных файлов в единственный больший файл.
http://www.mihaiu.name/2002/library_development_linux/ - ищет на этой странице "частичный"
Можно использовать ar
для создания .a
файл (статическая библиотека) от .o
, файлы (объектные файлы)
Видят man ar
для деталей.
Я полагаю, что.a файл является архивом, который может содержать несколько объектных файлов.