Compilando o mpich2 no OSX (e visando o OSX 10.5 SDK)

2

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.

    
por nlucaroni 20.09.2011 / 21:17

1 resposta

0

Eu decidi criar o 1.4 e o 1.3 para ver se o problema está lá.

Felizmente o 1.4 foi construído e funcionou bem. Parece que o iconv está estaticamente vinculado nessa versão de mpich2 --running otool -L mpiexec nem incluiu libiconv como dependência.

    
por 21.09.2011 / 21:41