Pregunta Compilando mpich2 en OSX (y apuntando al SDK OSX 10.5)


Estoy compilando mpich2 1.4.1p1 para OSX y usando -syroot para dirigir a los compiladores a un enlace contra el SDK de 10.5. Hago lo siguiente en un script para evitar escribir esto todo el tiempo. Como puede ver, me he desesperado con las variables de entorno y estoy usando a todos los que puedo encontrar en su LÉAME (excepto los que estoy desactivando).

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/ 

Desafortunadamente, la versión compilada no enlaza con ALGUNAS de las bibliotecas en los directorios 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)

La biblioteca iconv en el SDK es 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)

Estoy tratando de distribuirme contra esta aplicación y la mayoría de las máquinas OSX que he probado aquí en el laboratorio tienen libiconv versión 7.0.0. No quiero que esto sea un requisito en mi distribución.

Ampliando la fuente de mpich, puedo ver los registros y los archivos make que están usando la versión incorrecta, con una salpicadura de -L/opt/local/lib/ rociado a lo largo del proceso de construcción de hidratos y doxigenos.

¿Qué variables de entorno me estoy perdiendo? Me doy cuenta de que este es un script de compilación complejo y que alguien saltee una convención es de alta probabilidad. Seguiré buscando entre los makefiles. Y veré si uso sed para reemplazar cada instancia de -L/opt/local/lib/ con el camino que realmente quiero soluciona el problema.


2


origen




Respuestas:


Decidí construir 1.4 y 1.3 para ver si el problema reside allí.

Afortunadamente 1.4 construido y funcionó bien. Parece como si iconv está estáticamente vinculado en esa versión de mpich2 --corriendo otool -L mpiexec ni siquiera incluyó libiconv como una dependencia.


0