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?
c
unix
compilation
shared-libraries
.a
Dunc
fonte
fonte
a
rchive e outro és
haredo
bjectRespostas:
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.
fonte
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).
fonte
.lib
arquivo 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.
fonte
Eles são usados no estágio de vinculação.
.a
os arquivos são vinculados estaticamente e os.so
arquivos 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/lib
e/lib
possui a maioria deles, e também há aLIBRARY_PATH
variável de ambiente.fonte
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 .
fonte