将OpenMPI与libc ++相关联

时间:2016-03-03 10:18:29

标签: opensuse libraries linker mpi

我正在运行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

任何建议都非常感谢。

1 个答案:

答案 0 :(得分:0)

感谢@Zulan和@Mat的帮助。

我的问题是,虽然我设置了正确的编译器,但我没有将-stdlib=c++标志传递给它。要使用configure特别针对OpenMPI构建执行此操作,必须将CFLAGSCXXFLAGS环境变量设置为包含-stdlib=libc++。我是通过带有prepend-path的模块文件完成的。