【发布时间】:2021-01-24 14:31:41
【问题描述】:
我尝试构建 LLVM。 这就是我尝试的方式……
mkdir -p src/llvm-$(LLVM_VERSION).src/build
cd src/llvm-$(LLVM_VERSION).src/build && \
$(CMAKE) -GNinja \
-DCMAKE_INSTALL_PREFIX=$(BUNDLE) \
-DCMAKE_CXX_FLAGS="-D_GLIBCXX_USE_CXX11_ABI=0 -std=c++11 -static-libgcc -static-libstdc++ -l:libstdc++.a" \
-DLLVM_TARGETS_TO_BUILD="X86;NVPTX" \
-DLLVM_PARALLEL_COMPILE_JOBS=$(BUILD_JOBS) \
-DLLVM_PARALLEL_LINK_JOBS=2 \
-DLLVM_USE_CRT_RELEASE=MD \
-DLLVM_USE_CRT_DEBUG=MDd \
-DLLVM_STATIC=ON \
-DLLVM_INCLUDE_TESTS=OFF \
-DLLVM_INCLUDE_EXAMPLES=OFF \
-DLLVM_BUILD_LLVM_C_DYLIB=OFF \
-DLLVM_ENABLE_TERMINFO=OFF \
-DLLVM_ENABLE_UNWIND_TABLES=OFF \
-DLLVM_ENABLE_RTTI=ON \
.. && \
$(CMAKE) --build . && \
$(CMAKE) --build . --target install
您可以在 -DCMAKE_CXX_FLAGS 中看到 -D_GLIBCXX_USE_CXX11_ABI=0。 LLVM编译完成后,libLLVM*.a仍然包含abi:cxx11符号。
llvm-config 显示,llvm 构建过程完全忽略了“-D_GLIBCXX_USE_CXX11_ABI=0”标志。
> ./bundle/bin/llvm-config --cxxflags
-I/home/leonard/Documents/Develop/build_as_deps/bundle/include -std=c++11 -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -D_GNU_SOURCE -D_DEBUG -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS
您知道如何以禁用 abi:cxx11 符号并防止“-D_GLIBCXX_USE_CXX11_ABI=0”被覆盖的方式构建 llvm?
【问题讨论】:
-
我写在我的问题描述中。但似乎我需要确保它被注意到。请注意,-D_GLIBCXX_USE_CXX11_ABI=0 在 -DCMAKE_CXX_FLAGS 中定义。尽管如此,我还是得到了 abi:cxx11 符号。