Quais são os arquivos .a e .so?

Atualmente estou tentando portar um aplicativo C para o AIX e estou ficando confuso. Quais são os arquivos .a e .so e como eles são usados ​​ao criar / executar um aplicativo?

As bibliotecas de arquivos (.a) são vinculadas estaticamente, ou seja, quando você compila seu programa com a opção -c no gcc. Portanto, se houver alguma alteração na biblioteca, você precisará compilar e criar seu código novamente.

A vantagem do .so (object compartilhado) sobre a biblioteca .a é que eles são ligados durante o tempo de execução, ou seja, após a criação da opção .o do arquivo -o no gcc. Portanto, se houver alguma alteração no arquivo .so, você não precisará recompilar o programa principal. Mas certifique-se de que seu programa principal esteja vinculado ao novo arquivo .so com o comando ln.

Isso ajudará você a construir os arquivos .so. http://www.yolinux.com/TUTORIALS/LibraryArchives-StaticAndDynamic.html

Espero que isto ajude.

.a são bibliotecas estáticas. Se você usar código armazenado dentro deles, é retirado deles e incorporado em seu próprio binário. No Visual Studio, esses seriam arquivos .lib.

.so são bibliotecas dinâmicas. Se você usar código armazenado dentro deles, ele não será incorporado ao seu próprio binário. Em vez disso, ele é apenas referenciado, portanto, o binário dependerá deles e o código do arquivo so será incluído / carregado no tempo de execução. No Visual Studio / Windows, esses seriam arquivos .dll (com pequenos arquivos .lib contendo informações de vinculação).

os arquivos .a geralmente são bibliotecas que são vinculadas estaticamente (ou com mais precisão) e
.so são bibliotecas dinamicamente vinculadas.

Para fazer uma porta, você precisará do código-fonte que foi compilado para torná-los, ou arquivos equivalentes em sua máquina AIX.

Eles são usados ​​no estágio de vinculação. .a arquivos .a são vinculados estaticamente e os arquivos .so são vinculados, para que a biblioteca seja necessária sempre que você executar o exe.

Você pode encontrar onde eles estão armazenados, olhando para qualquer um dos diretórios lib … /usr/lib e /lib tem a maioria deles, e há também a variável de ambiente LIBRARY_PATH .

A Wikipedia é uma fonte decente para essa informação.

Para aprender sobre arquivos de biblioteca estática, como .a, leia Static libarary

Para aprender sobre arquivos de biblioteca compartilhada, como .so, leia Library_ (computação) #Shared_libraries Nesta página, também há informações úteis na seção Nomenclatura de arquivos .