У меня есть вопрос: как скомпилировать статическую библиотеку в Linux gcc
, т.е. мне нужно скомпилировать мой исходный код в файл с именем out.a. Достаточно ли просто скомпилировать команду gcc -o out.a out.c
? Я не совсем знаком gcc
, надеюсь, кто-нибудь может мне помочь.
c
gcc
static-libraries
Summer_More_More_Tea
источник
источник
Ответы:
Смотрите Создание общей и статической библиотеки с помощью компилятора gnu [gcc].
-c
означает создание промежуточного объектного файла, а не исполняемого файла.Это создает статическую библиотеку.
r
означает вставить с заменой,c
означает создать новый архив иs
означает написать индекс. Как всегда, см. Справочную страницу для получения дополнительной информации.источник
Вот полный пример make-файла:
Makefile
объяснение make-файла:
target: prerequisites
- глава правила$@
- означает цель$^
- означает все предпосылки$<
- означает только первое условиеar
- инструмент Linux для создания, изменения и извлечения из архивов см. справочные страницы для получения дополнительной информации . Варианты в этом случае означают:r
- заменить файлы, существующие внутри архиваc
- создать архив, если он еще не существуетs
- создать индекс объекта-файла в архивеВ заключение : статическая библиотека в Linux - это не что иное, как архив объектных файлов.
main.c используя lib
lib.h главный заголовок библиотеки
lib1.c первый источник lib
lib1.h соответствующий заголовок
lib2.c второй источник lib
lib2.h соответствующий заголовок
источник
ar
необходимо объяснение, так как это ключ к созданию статической библиотеки.ar
Программа создает, модифицирует и распаковывает из архивов, которые представляют собой отдельные файлы , проведение набора других файлов в структуре , которая позволяет получить исходные отдельные файлы.ar
создает индекс для символов, определенных в перемещаемых объектных модулях в архиве, когда вы указываете модификатор s. (см.man ar
)c++
компилятора:#ifdef __cplusplus extern "C" { #endif . . . #ifdef __cplusplus } #endif
Создайте объектные файлы с помощью gcc, затем используйте
ar
их для объединения в статическую библиотеку.источник