You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RedHat7.9构建LLVM 18.1.2工具与Runtime的问题咨询

构建LLVM 18.1.2工具链常见问题解决

环境说明

  • LLVM版本:git标签 llvmorg-18.1.2
  • 系统:RedHat 7.9 amd64
  • 编译器:自行编译的GCC 13.1(编译无异常)

初始疑问:能否同时构建LLVM工具与Runtime?

可以一次性构建,无需分开两个脚本。在LLVM主源码的CMake配置中,同时指定LLVM_ENABLE_PROJECTS和LLVM_ENABLE_RUNTIMES参数即可,CMake会自动处理依赖并按顺序构建。示例配置:

export CC=`which gcc`
export CXX=`which g++`

cmake \
  -D CMAKE_BUILD_TYPE=Release \
  -D LLVM_ENABLE_RTTI=ON \
  -D LLVM_ENABLE_PROJECTS="clang;clang-tools-extra;lld;lldb;polly;pstl" \
  -D LLVM_ENABLE_RUNTIMES="compiler-rt;libcxx;libcxxabi;libunwind" \
  -D CMAKE_INSTALL_PREFIX=/home/user/tools/clang \
  -D CMAKE_CXX_LINK_FLAGS="-Wl,-rpath,/path/to/gcc-13.1.0/lib64 -L/path/to/gcc-13.1.0/lib64" \
  -B build_all \
  -S llvm

注:若用GCC一次性构建,Runtime部分可能仍出现兼容性问题,建议先单独用GCC构建Clang工具链,再用Clang构建Runtime。


遇到的问题及解决

问题1:构建Runtime时出现gcc: error: unrecognized command-line option '-nostdlib++'

  • 原因:构建libunwind这类C++ runtime库时,CMake会自动传递C++专属编译选项,但配置时仅通过环境变量指定Clang可能失效,部分目标调用了系统默认的GCC 4.8.5,而GCC的C编译器不识别-nostdlib++。此外,LLVM官方推荐用Clang构建Runtime组件,部分特性依赖Clang支持。
  • 解决:在Runtime的CMake命令中显式指定编译器,强制所有环节使用Clang/Clang++:
cmake \
  -D CMAKE_BUILD_TYPE=Release \
  -D LLVM_ENABLE_RTTI=ON \
  -D CMAKE_INSTALL_PREFIX=/home/user/tools/clang \
  -D LLVM_ENABLE_RUNTIMES="compiler-rt;libcxx;libcxxabi;libunwind" \
  -D CMAKE_C_COMPILER=/path/to/clang \
  -D CMAKE_CXX_COMPILER=/path/to/clang++ \
  -B build_runtimes \
  -S runtimes

问题2:构建工具时链接liblldb.so出现file in wrong format错误

  • 原因:系统/usr/local/lib/libpanel.so为32位x86格式,与amd64编译环境不兼容。
  • 解决:
    1. 优先安装64位libpanel-devel包(RedHat 7下属于ncurses-devel子包),替换错误的32位库;
    2. 若无法替换,在LLVM工具的CMake配置中指定正确的64位库路径:
cmake \
  -D CMAKE_BUILD_TYPE=Release \
  -D LLVM_ENABLE_RTTI=ON \
  -D LLVM_ENABLE_PROJECTS="clang;clang-tools-extra;lld;lldb;polly;pstl" \
  -D CMAKE_INSTALL_PREFIX=/home/user/tools/clang \
  -D CMAKE_CXX_LINK_FLAGS="-Wl,-rpath,/path/to/gcc-13.1.0/lib64 -L/path/to/gcc-13.1.0/lib64" \
  -D CMAKE_LIBRARY_PATH=/usr/lib64 \
  -B build \
  -S llvm

问题3:用Clang构建compiler-rt时出现C++标准库特性缺失错误

  • 原因:编译时调用了系统默认GCC 4.8.5的C头文件,而GCC 4.8.5仅支持部分C11特性,std::make_unique(C14)和std::remove_reference_t(C14)均为C++14新增特性,导致编译失败。
  • 解决:强制Clang使用GCC 13.1的C标准库,并指定C14编译标准:
cmake \
  -D CMAKE_BUILD_TYPE=Release \
  -D LLVM_ENABLE_RTTI=ON \
  -D CMAKE_INSTALL_PREFIX=/home/user/tools/clang \
  -D LLVM_ENABLE_RUNTIMES="compiler-rt;libcxx;libcxxabi;libunwind" \
  -D CMAKE_C_COMPILER=/path/to/clang \
  -D CMAKE_CXX_COMPILER=/path/to/clang++ \
  -D CMAKE_CXX_STANDARD=14 \
  -D CMAKE_CXX_STANDARD_REQUIRED=ON \
  -D CMAKE_CXX_FLAGS="-stdlib=libstdc++ -I/path/to/gcc-13.1.0/include/c++/13.1.0 -I/path/to/gcc-13.1.0/include/c++/13.1.0/x86_64-pc-linux-gnu" \
  -D CMAKE_C_FLAGS="-I/path/to/gcc-13.1.0/include" \
  -D CMAKE_EXE_LINKER_FLAGS="-L/path/to/gcc-13.1.0/lib64 -Wl,-rpath,/path/to/gcc-13.1.0/lib64" \
  -B build_runtimes \
  -S runtimes

内容的提问来源于stack exchange,提问作者Paul Floyd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 16:14:53