В настоящее время я пытаюсь перенести приложение C на AIX, и я запутался. Что такое файлы .a и .so и как они используются при сборке / запуске приложения?
В настоящее время я пытаюсь перенести приложение C на AIX, и я запутался. Что такое файлы .a и .so и как они используются при сборке / запуске приложения?
Ответы:
Архивные библиотеки (.a) статически связаны, т.е. когда вы компилируете свою программу с опцией -c в gcc. Итак, если в библиотеке есть какие-либо изменения, вам нужно снова скомпилировать и собрать код.
Преимущество .so (общего объекта) перед .a библиотекой заключается в том, что они связаны во время выполнения, т.е. после создания опции .o file -o в gcc. Итак, если есть какие-либо изменения в .so файле, вам не нужно перекомпилировать основную программу. Но убедитесь, что ваша основная программа связана с новым .so файлом с помощью команды ln.
Это поможет вам создать файлы .so. http://www.yolinux.com/TUTORIALS/LibraryArchives-StaticAndDynamic.html
Надеюсь это поможет.
pic
(позиционно-независимому коду)?
.a статические библиотеки. Если вы используете код, хранящийся внутри них, он берется из них и встраивается в ваш собственный двоичный файл. В Visual Studio это будут файлы .lib.
.so динамические библиотеки. Если вы используете код, хранящийся внутри них, он не будет взят и встроен в ваш собственный двоичный файл. Вместо этого на него просто ссылаются, поэтому двоичный файл будет зависеть от них, и код из файла будет добавлен / загружен во время выполнения. В Visual Studio / Windows это были бы файлы .dll (с небольшими .lib файлами, содержащими информацию о ссылках).
.lib
файл для .dll
называется библиотека импорта.
Файлы .a обычно являются библиотеками, которые статически связаны (или, точнее, архивами), а
.so являются динамически связанными библиотеками.
Для создания порта вам понадобится исходный код, который был скомпилирован для их создания, или эквивалентные файлы на вашем компьютере AIX.
Они используются на этапе связывания. .a
файлы статически связаны, а .so
файлы являются своего рода связанными, поэтому библиотека необходима при каждом запуске exe.
Вы можете найти, где они хранятся, просмотрев любой из каталогов lib ... /usr/lib
и /lib
у них есть большинство из них, а также есть LIBRARY_PATH
переменная окружения.
Википедия - достойный источник этой информации.
Чтобы узнать о файлах статической библиотеки, таких как .a, прочитайте Static libarary
Чтобы узнать о файлах разделяемой библиотеки, таких как .so, прочитайте Library_ (computing) #Shared_libraries На этой странице также есть полезная информация в разделе именования файлов .
a
rchive, а другой -s
ненавистныйo
объект