Не удалось заменить stdlibC++ на libC++, ошибка фазы компоновщика

В настоящее время я работаю над одним из проектов моей команды по созданию полной цепочки инструментов LLVM (Clang, libcxx, libcxxabi) на компьютере CentOS.

Ранее мы скомпилировали нашу кодовую базу с помощью llvm-toolset-7/clang++, которая по умолчанию использует libstdC++ для компиляции и компоновки. И теперь мы хотели бы перейти на использование LLVM clang с libC++. Я собрал libC++ и libC++ abi из исходного кода (выпуск 5.0.1) и установил соответствующие флаги для компиляции нашей базы кода, но оказалось, что на этапе "компоновщик" возникли некоторые проблемы:

Флаги, установленные для компилятора:-stdlib=libc++ -std=c++14

Флаги, установленные для линкера:-stdlib=libc++

Ошибка:
/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../bin/ld: product.o: undefined reference to symbol '__cxa_free_exception@@CXXABI_1.3' //lib64/libstdc++.so.6: error adding symbols: DSO missing from command line clang-5.0: error: linker command failed with exit code 1 (use -v to see invocation)

Мой вопрос:

  1. Мы планируем заменить stdlibC++ на libC++, и мы настроили компилятор и компоновщик для запуска с -stdlib=libc++, Почему он жалуется на libstdC++?

  2. Как мы можем устранить эту ошибку? (Любые идеи были бы хорошы!)

  3. Чего не хватает, если мы хотим заменить stdlibC++ на libC++?

Немного больше деталей:

Среда: CentOS Linux выпуск 7.6.1810 (Core)

Версия Clang: версия Clang 5.0.1 (tags/RELEASE_501/final)

Цель: x86_64-unknown-linux-gnu

Модель потока: posix

Команды cmake, которые я использовал для сборки LLVM clang, libcxx и libcxxabi:

лязг:
cmake -DLLVM_ENABLE_PROJECTS="clang;libcxx;libcxxabi" -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DLLVM_LIBDIR_SUFFIX=64 ../llvm

libcxx:
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DLLVM_LIBDIR_SUFFIX=64 -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DLIBCXX_CXX_ABI=libcxxabi -DLIBCXX_CXX_ABI_INCLUDE_PATHS=../../libcxxabi/include ..

libcxxabi:
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DLLVM_LIBDIR_SUFFIX=64 -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DLIBCXXABI_LIBCXX_INCLUDES=../../libcxx/include ..

0 ответов

Другие вопросы по тегам