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)执行此操作,您必须将 CFLAGSCXXFLAGS 环境变量设置为包含 -stdlib=libc++。我通过带有 prepend-path.

的模块文件完成了此操作