我正在运行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
任何建议都非常感谢。
答案 0 :(得分:0)
感谢@Zulan和@Mat的帮助。
我的问题是,虽然我设置了正确的编译器,但我没有将-stdlib=c++
标志传递给它。要使用configure
特别针对OpenMPI构建执行此操作,必须将CFLAGS
和CXXFLAGS
环境变量设置为包含-stdlib=libc++
。我是通过带有prepend-path
的模块文件完成的。