На даний момент я намагаюся перенести додаток C на AIX і я заплутався. Що таке файли .a та .so і як вони використовуються під час створення / запуску програми?
На даний момент я намагаюся перенести додаток C на AIX і я заплутався. Що таке файли .a та .so і як вони використовуються під час створення / запуску програми?
Відповіді:
Бібліотеки архівів (.a) статично пов'язані, тобто коли ви компілюєте свою програму з опцією -c у gcc. Отже, якщо в бібліотеці є якісь зміни, вам потрібно скомпілювати і скласти свій код заново.
Перевага .so (спільного об'єкта) над бібліотекою .a полягає в тому, що вони підключаються під час виконання, тобто після створення вашого .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, прочитайте Статичний лібератор
Щоб дізнатися про файли спільної бібліотеки, такі як .so read Library_ (computing) #Shared_libraries На цій сторінці також є корисна інформація у розділі Ім'я файлів .
a
rchive і іншаs
Харедo
▪ Таблиця