Como faço para criar uma biblioteca dinâmica (dylib) com o Xcode?
Eu estou construindo alguns utilitários de linha de comando no Xcode (simples C, sem cacau). Eu quero que todos eles usem minha versão customizada de libpng, e eu quero economizar espaço compartilhando uma cópia da biblioteca entre todos os executáveis (eu não me importo de re-distribuir.dylib
com eles).
Preciso fazer alguma mágica para obter símbolos de exportação libpng?
Faz"Link binário com bibliotecas" construir link de fase estaticamente?
Os documentos da Apple mencionam o carregamento de bibliotecas em tempo de execução comdlopen
, mas como posso fazer o Xcode criar executáveis sem reclamar de símbolos ausentes?
Eu acho que descobri:
A libpng não estava ligando corretamente, porque eu criei executáveis de 32/64 bits e uma biblioteca de 32 bits. As configurações de construção da biblioteca e os executáveis devem corresponder.
config.h da libpng precisa ter toneladas de define como#define FEATURE_XXX_SUPPORTED
"Link binário com bibliotecas" fase de construção manipula bibliotecas dinâmicas muito bem, eDYLD_FALLBACK_LIBRARY_PATH
variável ambiental é necessária para o carregamento.dylib
s do pacote de aplicativos.