2

Я собираю 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/ на путь, который я действительно хочу.

1 ответ1

0

Я решил собрать 1.4 и 1.3, чтобы увидеть, есть ли проблема там.

К счастью, 1.4 построен и работает нормально. Похоже, что iconv статически связан в этой версии mpich2 --running otool -L mpiexec даже не включал libiconv в качестве зависимости.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .