在OSX上编译mpich2(并针对OSX 10.5 SDK)


2

我正在编译 mpich2 1.4.1p1 对于OSX并使用-sysroot指导编译器链接SDK for 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)

SDK中的iconv库是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机器都有libiconv版本7.0.0。我不希望这是我的发行版中的要求。

grep'ing mpich的来源,我可以看到使用错误版本的日志和makefile,以及 -L/opt/local/lib/ 洒在整个九头蛇和doxygen构建过程中。

我错过了哪些环境变量?我意识到这是一个复杂的构建脚本,并且有人跳过约定很有可能。我将继续通过makefile搜索。我会看看是否使用 sed 替换每个实例 -L/opt/local/lib/ 我真正想要的路径修复了这个问题。

Answers:


0

我决定构建1.4和1.3来查看问题是否存在于那里。

值得庆幸的是1.4内置并运行良好。看起来好像 iconv 在该版本中静态链接 mpich2 --running otool -L mpiexec 甚至没有包括在内 libiconv 作为依赖。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.