Link 针对 libc++ 的 OpenMPI
Link OpenMPI against libc++
我运行正在使用 OpenSUSE 13.2,出于各种原因,我正在从事的一个项目需要将 OpenMPI 链接到 libc++
而不是 libstd++
。
我已经尝试设置以下环境变量:
CXX <path>/llvm-3.8/bin/clang++
CC <path>/llvm-3.8/bin/clang
OMPI_CC <path>/llvm-3.8/bin/clang
OMPI_CXX <path>/llvm-3.8/bin/clang++
但是虽然这确实使用 clang 编译,但它仍然链接到 libstdc++
,正如以下命令所确认的 运行 在 openmpi bin 文件夹中的各种可执行文件上:
openmpi-1.10.2/bin > ldd vtc++
linux-vdso.so.1 (0x00007ffc9f0ed000)
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007ffb1f2cd000)
libm.so.6 => /lib64/libm.so.6 (0x00007ffb1efcb000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007ffb1edb4000)
libc.so.6 => /lib64/libc.so.6 (0x00007ffb1ea0d000)
/lib64/ld-linux-x86-64.so.2 (0x00007ffb1f611000)
并且:
openmpi-1.10.2/bin > objdump -x vtc++ | grep NEEDED
NEEDED libstdc++.so.6
NEEDED libm.so.6
NEEDED libgcc_s.so.1
NEEDED libc.so.6
非常感谢任何建议。
感谢@Zulan 和@Mat 的帮助。
我的问题是,虽然我设置了正确的编译器,但我没有将 -stdlib=c++
标志传递给它。要使用 OpenMPI 构建(尤其是使用 configure
)执行此操作,您必须将 CFLAGS
和 CXXFLAGS
环境变量设置为包含 -stdlib=libc++
。我通过带有 prepend-path
.
的模块文件完成了此操作
我运行正在使用 OpenSUSE 13.2,出于各种原因,我正在从事的一个项目需要将 OpenMPI 链接到 libc++
而不是 libstd++
。
我已经尝试设置以下环境变量:
CXX <path>/llvm-3.8/bin/clang++
CC <path>/llvm-3.8/bin/clang
OMPI_CC <path>/llvm-3.8/bin/clang
OMPI_CXX <path>/llvm-3.8/bin/clang++
但是虽然这确实使用 clang 编译,但它仍然链接到 libstdc++
,正如以下命令所确认的 运行 在 openmpi bin 文件夹中的各种可执行文件上:
openmpi-1.10.2/bin > ldd vtc++
linux-vdso.so.1 (0x00007ffc9f0ed000)
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007ffb1f2cd000)
libm.so.6 => /lib64/libm.so.6 (0x00007ffb1efcb000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007ffb1edb4000)
libc.so.6 => /lib64/libc.so.6 (0x00007ffb1ea0d000)
/lib64/ld-linux-x86-64.so.2 (0x00007ffb1f611000)
并且:
openmpi-1.10.2/bin > objdump -x vtc++ | grep NEEDED
NEEDED libstdc++.so.6
NEEDED libm.so.6
NEEDED libgcc_s.so.1
NEEDED libc.so.6
非常感谢任何建议。
感谢@Zulan 和@Mat 的帮助。
我的问题是,虽然我设置了正确的编译器,但我没有将 -stdlib=c++
标志传递给它。要使用 OpenMPI 构建(尤其是使用 configure
)执行此操作,您必须将 CFLAGS
和 CXXFLAGS
环境变量设置为包含 -stdlib=libc++
。我通过带有 prepend-path
.