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


Eu estou compilando mpich2 1.4.1p1 para OSX e usando -sysroot para direcionar os compiladores para vincular-se ao 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 vincula 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.

De acordo com 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/ Aspergido em todo o processo de construção hydra e doxygen.

Quais variáveis ​​de ambiente estou 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 eu vou ver se usando sed para substituir cada instância de -L/opt/local/lib/ com o caminho que eu realmente quero corrige o problema.


2


origem




Respostas:


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

Felizmente 1.4 construído e correu bem. Parece que iconv está estaticamente ligado nessa versão do mpich2 --corrida otool -L mpiexec nem sequer incluiu libiconv como uma dependência.


0