Eu tenho uma pergunta: Como compilar uma biblioteca estática no Linux gcc
, ou seja, eu preciso compilar meu código-fonte em um arquivo chamado out.a. É suficiente simplesmente compilar com o comando gcc -o out.a out.c
? Não estou familiarizado gcc
, espero que alguém possa me dar uma mão.
c
gcc
static-libraries
Summer_More_More_Tea
fonte
fonte
Respostas:
Consulte Criando uma biblioteca estática e compartilhada com o compilador gnu [gcc]
-c
significa criar um arquivo de objeto intermediário, em vez de um executável.Isso cria a biblioteca estática.
r
significa inserir com substituição,c
significa criar um novo arquivo es
significa escrever um índice. Como sempre, consulte a página do manual para mais informações.fonte
Aqui está um exemplo completo do makefile:
makefile
explicando o makefile:
target: prerequisites
- o chefe da regra$@
- significa o alvo$^
- significa todos os pré-requisitos$<
- significa apenas o primeiro pré-requisitoar
- uma ferramenta Linux para criar, modificar e extrair de arquivos, consulte as páginas de manual para obter mais informações . As opções neste caso significam:r
- substituir arquivos existentes dentro do arquivoc
- criar um arquivo se ainda não existirs
- criar um índice de arquivo de objeto no arquivo mortoPara concluir : A biblioteca estática no Linux nada mais é do que um arquivo morto de arquivos de objetos.
main.c usando a lib
lib.h o cabeçalho principal da libs
primeira fonte lib lib1.c
lib1.h o cabeçalho correspondente
lib2.c segunda fonte lib
lib2.h o cabeçalho correspondente
fonte
ar
explicação precisa, pois é a chave para criar a biblioteca estática.ar
programa cria, modifica e extrai arquivos, que são arquivos únicos que contêm uma coleção de outros arquivos em uma estrutura que possibilita recuperar os arquivos individuais originais.ar
cria um índice para os símbolos definidos nos módulos de objetos realocáveis no arquivo morto quando você especifica os modificadores. (vejaman ar
)c++
compilador:#ifdef __cplusplus extern "C" { #endif . . . #ifdef __cplusplus } #endif
Gere os arquivos de objeto com o gcc e use-os
ar
para agrupá-los em uma biblioteca estática.fonte