O que faz um GCC biblioteca estática compilada contém?
-
05-07-2019 - |
Pergunta
Os meus links de aplicativos contra libsamplerate.a. Estou fazendo isso para fazer a distribuição do binário final, mais fácil.
Eu estou preocupado que talvez o código dentro do arquivo .a depende de algumas outras bibliotecas Eu também precisará distribuir.
Mas se isso não acontecer eu estou preocupado que eu estou inchaço até o meu pedido muito por incluindo várias cópias de exemplo. libc.
O que exatamente será libsamplerate.a dentro? bytecode de apenas libsamperate? Ou mais?
Solução
A biblioteca estática é apenas uma coleção de arquivos objeto. Quando você compilar um programa contra uma biblioteca estática, o código objeto para as funções usadas pelo seu programa é copiado a partir da biblioteca em seu executável. Ligando contra uma biblioteca estática não irá causar quaisquer funções fora dessa biblioteca para ser incluído em seu código.
Outras dicas
A .a arquivo é basicamente apenas um pacote de .o arquivos. Você pode demonstrar isso usando a ferramenta ar
.
Por exemplo, para exibir o conteúdo de sua biblioteca:
ar -t libsamplerate.a
Para criar um arquivo .a partir do zero:
ar -r tim.a *.txt
Apenas o código objeto para libsamplerate. A ligar estaticamente a uma única biblioteca não faz todas as bibliotecas vinculadas estaticamente; Isso seria ruim.