-1
我运行的是OpenSUSE 13.2,由于各种原因,我正在开发的一个项目需要OpenMPI与libc++
而不是libstd++
链接。将OpenMPI与libC++联系起来
我已经尝试设置以下的环境变量:
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++
不过,虽然这并编译使用铛,它仍链接到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
任何建议非常感谢。
有一个'-stdlib = ...'参数需要通过。 – Mat
我的意思是OpenMPI库本身需要针对libC++构建,而不是我使用OpenMPI编写的程序? – Samidamaru
所有东西都需要使用相同的标准库(包括所有静态和共享库)来构建,否则您会遇到未定义的行为,并且非常难以调试问题(遍及整个地方的ODR违规) – Mat