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

279

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

Теги:
shared-libraries
compilation
.a

5 ответов

291
Лучший ответ

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

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

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

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

  • 32
    +1 за ресурсы, в которых ОП явно нуждается
  • 1
    относится ли что-либо к pic (независимый от позиции код)?
128

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

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

  • 17
    На мой взгляд, это объясняет это даже лучше, чем принятый ответ. Спасибо!
  • 0
    Привет, есть ли возможность декомпилировать .so файл в коде c / c ++.?
Показать ещё 2 комментария
10

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

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

  • 0
    Как мне создать приложение для использования файлов .so?
  • 0
    Есть много отличных ссылок для создания обоих типов библиотек и ссылки на них в Интернете. Google твой друг.
Показать ещё 1 комментарий
6

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

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

1

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

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню