Я собираю mpich2 1.4.1p1 для OSX и использую -sysroot, чтобы заставить компиляторы связываться с SDK для 10.5. Я делаю следующее в скрипте, чтобы не вводить все это каждый раз. Как вы можете видеть, я стал отчаянным в переменных окружения и использую всех, кого я могу найти в их README (кроме Fortran, которые я отключаю).
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/
К сожалению, скомпилированная версия не связана с НЕКОТОРЫМИ библиотеками в каталогах 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)
Библиотека iconv в 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)
Я пытаюсь распространять это приложение, и большинство компьютеров OSX, которые я тестировал здесь, в лаборатории, имеют версию 7.0.0 libiconv. Я не хочу, чтобы это было требованием в моем дистрибутиве.
Grep'ing источник mpich, я могу видеть журналы и make-файлы, которые используют неправильную версию, с разбрызгиванием -L/opt/local/lib/
разбросанным по всему процессу сборки гидры и doxygen.
Какие переменные среды мне не хватает? Я понимаю, что это сложный сценарий сборки, и кто-то пропускает соглашение с высокой вероятностью. Я продолжу охотиться через make-файлы. И я посмотрю, исправит ли проблему использование sed
для замены каждого экземпляра -L/opt/local/lib/
на путь, который я действительно хочу.