Что такое файлы .a и .so?

В настоящее время я пытаюсь перенести приложение C на AIX и смущаюсь. Какие файлы .a и .so и как они используются при создании/запуске приложения?

Ответ 1

Библиотеки архивов (.a) статически связаны, когда вы скомпилируете свою программу с опцией -c в gcc. Итак, если есть какие-либо изменения в библиотеке, вам нужно снова скомпилировать и создать свой код.

Преимущество библиотеки .so(shared object) над .a заключается в том, что они связаны во время выполнения, т.е. после создания вашего файла .o файла в gcc. Итак, если есть какие-либо изменения в .so файле, вам не нужно перекомпилировать вашу основную программу. Но убедитесь, что ваша основная программа связана с новым .so файлом с помощью команды ln.

Это поможет вам создать файлы .so. http://www.yolinux.com/TUTORIALS/LibraryArchives-StaticAndDynamic.html

Надеюсь, что это поможет.

Ответ 2

.a - статические библиотеки. Если вы используете код, хранящийся внутри них, он берется из них и встроен в ваш собственный двоичный файл. В Visual Studio это были бы .lib файлы.

.so - динамические библиотеки. Если вы используете код, хранящийся внутри них, он не берется и не внедряется в ваш собственный двоичный файл. Вместо этого он просто ссылается, поэтому двоичный файл будет зависеть от них, а код из файла будет добавлен/загружен во время выполнения. В Visual Studio/Windows это были бы DLL файлы (с небольшими .lib файлами, содержащими ссылку).

Ответ 3

.a файлы обычно представляют собой библиотеки, которые статически связаны (или, точнее, архивы), и
.so - динамически связанные библиотеки.

Чтобы сделать порт, вам понадобится исходный код, который был скомпилирован для их создания, или эквивалентные файлы на вашей машине AIX.

Ответ 4

Они используются на этапе связывания. .a файлы статически связаны, а файлы .so связаны с сортировкой, поэтому библиотека нужна всякий раз, когда вы запускаете exe.

Вы можете найти, где они хранятся, просмотрев любой из каталогов lib... /usr/lib и /lib имеют большинство из них, а также есть переменная среды LIBRARY_PATH.

Ответ 5

Википедия - достойный источник этой информации.

Чтобы узнать о файлах статических библиотек, таких как .a читать Статический libarary

Чтобы узнать об общих библиотечных файлах, например .so прочитать Library_ (вычисления) #Shared_libraries На этой странице также есть полезная информация в Именование файлов.