LINUX.ORG.RU

История изменений

Исправление gh0stwizard, (текущая версия) :

Полностью пост не читай, сарказмом всех удивляй.

Все, я все понял, что ты имеешь в виду. Допустим, надо выпустить либу без внешних зависимостей. Т.о. надо запихнуть в .so все объектные файлы, которые идут как зависимости. Чтобы это сделать насколько я знаю нужны либо *.a, либо *.o файлы, чтобы ld смог их скомпоновать в один наш файл .so. Да, тогда можно назвать этот процесс со «статической компиляцией».

Но это не относится к делу, т.к. это детали того как собрана библиотека, а не обсуждаемый вопрос линкование программы с библиотекой. Программу также можно собрать полностью со статической линковкой (через *.a файлы) и тогда для ее запуска не нужно ничего по сути, либо динамически через dlopen (plugin-architecture, ручная загрузка) или через ld.so (автоматическая загрузка).

В любом случае, при сборки программы или библиотеки т.о., чтобы не было никаких зависимостей при загрузке требуются *.o, либо *.a файлы. В противном случае, получим динамическую загрузку, что выражается другими словами в необходимости возить вместе с программой/библиотекой файлы-зависимости. В случае статической линковки, конечный файл не требует никаких доп. файлов, т.к. внутри содержится все необходимое.

Исходная версия gh0stwizard, :

Полностью пост не читай, сарказмом всех удивляй.

Все, я все понял, что ты имеешь в виду. Допустим, надо выпустить либу без внешних зависимостей. Т.о. надо запихнуть в .so все объектные файлы, которые идут как зависимости. Чтобы это сделать насколько я знаю нужны либо *.a, либо *.o файлы, чтобы ld смог их скомпоновать в один наш файл .so. Да, тогда можно назвать этот процесс со «статической компиляцией».

Но это не относится к делу, т.к. это детали того как собрана библиотека, а не обсуждаемый вопрос линкование программы с библиотекой. Программу также можно собрать полностью со статической линковкой (через *.a файлы) и тогда для ее запуска не нужно ничего по сути, либо динамически через dlopen (plugin-architecture, ручная загрузка) или через ld.so (автоматическая загрузка).

В любом случае, при сборки программы или библиотеки т.о., чтобы не было никаких зависимостей при загрузке требуются *.o, либо *.a файлы. В противном случае, получим динамическую загрузку, что выражается другими словами в необходимости возить вместе с программой/библиотекой файлы-зависимости. В случае статической линковки, конечный файл не требует никаких доп. файлов, т.к. внутри содержиться вообще все необходимое.