Atualmente, estou tentando portar um aplicativo C para o AIX e estou ficando confuso. O que são arquivos .eae .so e como eles são usados na criação / execução de um aplicativo?
Atualmente, estou tentando portar um aplicativo C para o AIX e estou ficando confuso. O que são arquivos .eae .so e como eles são usados na criação / execução de um aplicativo?
Respostas:
As bibliotecas de arquivamento (.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 construir seu código novamente.
A vantagem do .so (objeto compartilhado) sobre a biblioteca .a é que eles estão vinculados 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 seu programa principal. Mas verifique se o seu programa principal está vinculado ao novo arquivo .so com o comando ln.
Isso ajudará você a criar os arquivos .so. http://www.yolinux.com/TUTORIALS/LibraryArchives-StaticAndDynamic.html
Espero que isto ajude.
pic(código independente de posição)?
.a são bibliotecas estáticas. Se você usa o código armazenado dentro deles, é retirado deles e incorporado ao seu próprio binário. No Visual Studio, esses seriam arquivos .lib.
.so são bibliotecas dinâmicas. Se você usar o código armazenado dentro deles, ele não será utilizado e incorporado ao seu próprio binário. Em vez disso, é apenas referenciado, portanto o binário dependerá deles e o código do arquivo so será adicionado / carregado no tempo de execução. No Visual Studio / Windows, esses arquivos seriam .dll (com pequenos arquivos .lib contendo informações de vinculação).
.libarquivo pequeno para .dllé chamado de biblioteca de importação.
Os arquivos .a geralmente são bibliotecas vinculadas estaticamente (ou arquivam com mais precisão) e
.so são bibliotecas vinculadas dinamicamente.
Para criar uma porta, você precisará do código-fonte que foi compilado para produzi-las ou de arquivos equivalentes em sua máquina AIX.
Eles são usados no estágio de vinculação. .aos arquivos são vinculados estaticamente e os .soarquivos são meio que vinculados, de modo que a biblioteca é necessária sempre que você executa o exe.
Você pode encontrar onde eles estão armazenados olhando para qualquer um dos diretórios lib ... /usr/libe /libpossui a maioria deles, e também há a LIBRARY_PATHvariável de ambiente.
A Wikipedia é uma fonte decente para essa informação.
Para aprender sobre arquivos de biblioteca estática como .a, leia Bibliografia estática
Para aprender sobre os arquivos da biblioteca compartilhada, como. Então leia Library_ (computing) #Shared_libraries Nesta página, também há informações úteis na seção Nomenclatura de arquivos .
archive e outro ésharedobject