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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top