Eu estou compilando mpich2 1.4.1p1 para OSX e usando -sysroot para direcionar os compiladores para link contra o SDK para 10.5. Eu faço o seguinte em um script para evitar digitar tudo isso todas as vezes. Como você pode ver, eu fiquei desesperado nas variáveis de ambiente e usando todos que eu posso encontrar no seu README (exceto para os que eu estou desabilitando).
export CFLAGS="-isysroot /Developer/SDKs/MacOSX10.5.sdk -mmacosx-version-min=10.5"
export CPPLAGS="-isysroot /Developer/SDKs/MacOSX10.5.sdk -mmacosx-version-min=10.5"
export LDFLAGS="-isysroot /Developer/SDKs/MacOSX10.5.sdk -mmacosx-version-min=10.5"
export CXXFLAGS="-isysroot /Developer/SDKs/MacOSX10.5.sdk -mmacosx-version-min=10.5"
export LIBS="-isysroot /Developer/SDKs/MacOSX10.5.sdk -mmacosx-version-min=10.5"
../configure --with-pm=gforker --enable-fast=O3 --disable-f77 --disable-fc --prefix=/opt/mpich2/64/
Infelizmente, a versão compilada não faz link com ALGUMAS das bibliotecas nos diretórios OSX10.5.
otool -L /opt/mpich2/64/bin/mpiexec
/opt/local/lib/libxml2.2.dylib (compatibility version 10.0.0, current version 10.6.0)
/opt/local/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.3)
/opt/local/lib/libiconv.2.dylib (compatibility version 8.0.0, current version 8.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 111.1.4)
/usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)
A biblioteca iconv no SDK é 7.0.0,
otool -L /Developer/SDKs/MacOSX10.5.sdk/usr/lib/libiconv.2.dylib
/usr/lib/libiconv.2.dylib (compatibility version 7.0.0, current version 7.0.0)
/usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 111.0.0)
Estou tentando distribuir contra esse aplicativo e a maioria das máquinas OSX que testei aqui no laboratório tem libiconv versão 7.0.0. Eu não quero que isso seja um requisito na minha distribuição.
Seguindo a fonte do mpich, eu posso ver os logs e makefiles que estão usando a versão errada, com um espalhamento de -L/opt/local/lib/
espalhado por todo o processo de construção hydra e doxygen.
Quais variáveis de ambiente estão faltando? Eu percebo que este é um script complexo e alguém que pula uma convenção é de alta probabilidade. Eu continuarei a procurar pelos makefiles. E veremos se usar sed
para substituir todas as instâncias de -L/opt/local/lib/
pelo caminho que realmente quero corrige o problema.