Каково различие между .lib и.a файлами?

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

40
задан Nantucket 25 February 2010 в 21:55
поделиться

3 ответа

.a - это архив кода: скомпилированный, но не связанный. Вы свяжетесь с ним статически на последнем этапе связывания вашей программы.

.lib может быть либо тем же, что и .a, либо волшебной так называемой «библиотекой импорта»: тонким заполнителем, который заставляет вас требовать .dll во время выполнения.

41
ответ дан 27 November 2019 в 01:34
поделиться

Обычно .a предназначен для статических библиотек под Linux, тогда как .lib - для того же, но в Windows. Но, конечно, это просто условность.

5
ответ дан 27 November 2019 в 01:34
поделиться

В системах Unix у вас есть файлы .a . Это простые архивы объектных файлов ( .o ).

В Windows есть файлы .lib , которые представляют собой одно и то же, но для Windows, а не для Unix.

Дополнительная тонкость заключается в том, что для того, чтобы связать некоторый код с DLL (в Windows), вы должны установить ссылку на файл .lib , который содержит простые оболочки, вызывающие DLL. В системе Unix обычно нет необходимости в таких оболочках (компоновщик достаточно умен, чтобы генерировать их на лету).

24
ответ дан 27 November 2019 в 01:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: