Я запускаю 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 бен :
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