世上最全:ubuntu 上及天河超算上源码编译llvm遇到的坑,cmake,ninja完整过程

1)

make -S llvm -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/home/a/src/llvm-project/install -G Ninja -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra;lld;lldb;bolt;mlir;flang;openmp;poly" -DCMAKE_BUILD_TYPE=Release

CMake Error: CMake was unable to find a build program corresponding to "Ninja". CMAKE_MAKE_PROGRAM is not set. You probably need to select a different build tool.

CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage

CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage

CMake Error: CMAKE_ASM_COMPILER not set, after EnableLanguage

-- Configuring incomplete, errors occurred!

See also "/home/a/src/llvm-project/build/CMakeFiles/CMakeOutput.log".

CMAKE_C_COMPILER等三个没有定义

which gcc

sudo apt install g++

  1. 继续报错

a@a:~/src/llvm-project$ cmake -S llvm -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/home/a/src/llvm-project/install -G Ninja -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra;lld;lldb;bolt;mlir;flang;openmp;poly" -DCMAKE_BUILD_TYPE=Release cmake -DCMAKE_C_COMPILER=/usr/bin/gcc -DCMAKE_CXX_COMPILER=/usr/bin/g++ -DCMAKE_ASM_COMPILER=/usr/bin/gcc

CMake Error: CMake was unable to find a build program corresponding to "Ninja". CMAKE_MAKE_PROGRAM is not set. You probably need to select a different build tool.

-- Configuring incomplete, errors occurred!

See also "/home/a/src/llvm-project/build/CMakeFiles/CMakeOutput.log".

感觉CMAKE没有问题啊

cmake --version

cmake version 3.22.1

CMake suite maintained and supported by Kitware (kitware.com/cmake).

sudo apt install ninja-build

装ninja

cmake -S llvm -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/home/a/src/llvm-project/install -G Ninja -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra;lld;lldb;bolt;mlir;flang;openmp;poly" -DCMAKE_BUILD_TYPE=Release cmake -DCMAKE_C_COMPILER=/usr/bin/gcc -DCMAKE_CXX_COMPILER=/usr/bin/g++ -DCMAKE_ASM_COMPILER=/usr/bin/gcc

CMake Error: CMake was unable to find a build program corresponding to "Ninja". CMAKE_MAKE_PROGRAM is not set. You probably need to select a different build tool.

-- Configuring incomplete, errors occurred!

See also "/home/a/src/llvm-project/build/CMakeFiles/CMakeOutput.log".

a@a:~/src/llvm-project$ sudo apt install ninja-build

sudo a 的密码:

正在读取软件包列表... 完成

正在分析软件包的依赖关系树... 完成

正在读取状态信息... 完成

下列【新】软件包将被安装:

ninja-build

升级了 0 个软件包,新安装了 1 个软件包,要卸载 0 个软件包,有 265 个软件包未被升级。

需要下载 111 kB 的归档。

解压缩后会消耗 358 kB 的额外空间。

获取:1 http://mirrors.tuna.tsinghua.edu.cn/ubuntu jammy/universe amd64 ninja-build amd64 1.10.1-1 111 kB

已下载 111 kB,耗时 3秒 (41.9 kB/s)

正在选中未选择的软件包 ninja-build。

(正在读取数据库 ... 系统当前共安装有 218408 个文件和目录。)

准备解压 .../ninja-build_1.10.1-1_amd64.deb ...

正在解压 ninja-build (1.10.1-1) ...

正在设置 ninja-build (1.10.1-1) ...

正在处理用于 man-db (2.10.2-1) 的触发器 ...

a@a:~/src/llvm-project$ cmake -S llvm -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/home/a/src/llvm-project/install -G Ninja -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra;lld;lldb;bolt;mlir;flang;openmp;poly" -DCMAKE_BUILD_TYPE=Release cmake -DCMAKE_C_COMPILER=/usr/bin/gcc -DCMAKE_CXX_COMPILER=/usr/bin/g++ -DCMAKE_ASM_COMPILER=/usr/bin/gcc

CMake Error at CMakeLists.txt:143 (MESSAGE):

poly isn't a known project:

bolt;clang;clang-tools-extra;compiler-rt;cross-project-tests;libclc;lld;lldb;mlir;openmp;polly;flang;libc.

Did you mean to enable it as a runtime in LLVM_ENABLE_RUNTIMES?

6)分析

poly写错了,应该是polly

cmake -S llvm -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/home/a/src/llvm-project/install -G Ninja -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra;lld;lldb;bolt;mlir;flang;openmp;polly" -DCMAKE_BUILD_TYPE=Release cmake -DCMAKE_C_COMPILER=/usr/bin/gcc -DCMAKE_CXX_COMPILER=/usr/bin/g++ -DCMAKE_ASM_COMPILER=/usr/bin/gcc

目前还是OK的。

累啊

cmake -S llvm -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/home/a/src/llvm-project/install -G Ninja -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra;lld;lldb;bolt;mlir;flang;openmp;poly" -DCMAKE_BUILD_TYPE=Release cmake -DCMAKE_C_COMPILER=/usr/bin/gcc -DCMAKE_CXX_COMPILER=/usr/bin/g++ -DCMAKE_ASM_COMPILER=/usr/bin/gcc

-- Generating done

-- Build files have been written to: /home/a/src/llvm-project/build

cmake都要这么久,估计得弄几天几夜。

7)cmake, llvm参数分析

cmake -S llvm:主的文件夹是llvm?大概这个意思吧?

-B build:在build里面构建。

-DCMAKE_BUILD_TYPE=Release:release版本。

-DCMAKE_INSTALL_PREFIX=/home/a/src/llvm-project/install :安装目录

-G Ninja:这个是什么交叉编译,不知道啥意思。

-DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra;lld;lldb;bolt;mlir;flang;openmp;poly":支要安装的随便库。

包括了下面这些:

bolt CODE_OF_CONDUCT.md flang-rt libcxxabi llvm polly third-party

build compiler-rt install libunwind llvm-libgcc pyproject.toml utils

clang CONTRIBUTING.md libc LICENSE.TXT mlir README.md

clang-tools-extra cross-project-tests libclc lld offload runtimes

cmake flang libcxx lldb openmp SECURITY.md

-DCMAKE_BUILD_TYPE=Release :重复了。

cmake -DCMAKE_C_COMPILER=/usr/bin/gcc:C编译器。

-DCMAKE_CXX_COMPILER=/usr/bin/g++:C++编译器

-DCMAKE_ASM_COMPILER=/usr/bin/gcc:这个不ASM不知道对不对啊。

8)在虚拟机里面ninja -j2开始编译

JB真是慢死了,VMware编译了半天还没有搞完

9)在国家超级计算天津中心天河超算上再测试一下

9.1)

前面报了个什么CMAKE错误,好像是没有ninja

加载ninja-1.10.2-gcc-8.5.0-pfvjk4l即可

module load ninja-1.10.2-gcc-8.5.0-pfvjk4l

  1. ninja-1.10.2-gcc-8.5.0-pfvjk4l

9.2)缺少python 3.8及以上

-- flang project is enabled

CMake Error at /fs2/software/spack/optv018/linux-rhel8-icelake/gcc-8.5.0/cmake-3.23.1-e4c4mah/share/cmake-3.23/Modules/FindPackageHandleStandardArgs.cmake:230 (message):

Could NOT find Python3: Found unsuitable version "3.6.8", but required is

at least "3.8" (found /usr/bin/python3, found components: Interpreter)

Call Stack (most recent call first):

/fs2/software/spack/optv018/linux-rhel8-icelake/gcc-8.5.0/cmake-3.23.1-e4c4mah/share/cmake-3.23/Modules/FindPackageHandleStandardArgs.cmake:592 (_FPHSA_FAILURE_MESSAGE)

/fs2/software/spack/optv018/linux-rhel8-icelake/gcc-8.5.0/cmake-3.23.1-e4c4mah/share/cmake-3.23/Modules/FindPython/Support.cmake:3181 (find_package_handle_standard_args)

/fs2/software/spack/optv018/linux-rhel8-icelake/gcc-8.5.0/cmake-3.23.1-e4c4mah/share/cmake-3.23/Modules/FindPython3.cmake:490 (include)

CMakeLists.txt:975 (find_package)

解决方法:

查看有啥安装包

module av | grep -i python

intel-tbb-2020.3-gcc-9.4.0-6nvswbj py-python-dateutil-2.8.2-gcc-8.5.0-mzujxvc

intel-tbb-2020.3-intel-19.0.4.243-yfj7kp6 py-python-dateutil-2.8.2-gcc-9.4.0-vkg366p

libcroco-0.6.13-gcc-8.5.0-hr25o5z python-2.7.18-intel-19.0.4.243-7suzg66

libcroco-0.6.13-gcc-9.4.0-phm7hdo python-2.7.18-intel-19.1.2.254-lnkdtlw

libdc1394-2.2.6-gcc-9.4.0-2mhxr35 python-3.9.7-intel-19.1.2.254-ktoctpo

libdrm-2.4.110-gcc-8.5.0-jbgqeik python-3.9.12-gcc-8.5.0-balcpow

libdwarf-20180129-gcc-8.5.0-pesaavu python-3.9.12-gcc-8.5.0-m2gb6bx

libdwarf-20180129-gcc-9.4.0-ssa6ru2 python-3.9.12-gcc-8.5.0-rweoubv

libedit-3.1-20210216-gcc-8.5.0-3xck2qs python-3.9.12-gcc-9.4.0-2uno5yc

libedit-3.1-20210216-gcc-9.4.0-3umrnor python-3.9.12-gcc-9.4.0-a3ewpjw

libedit-3.1-20210216-intel-19.0.4.243-o62rpze python-3.9.12-gcc-9.4.0-u37vpnm

module load python-3.9.12-gcc-8.5.0-rweoubv加载其中一个。

10)还是这个cmake命令,好像没有遇到什么问题

perl 复制代码
cmake -S llvm -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/fs2/home/***/llvm/install -G Ninja -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra;lld;lldb;bolt;mlir;flang;openmp;polly"  -DCMAKE_C_COMPILER=/usr/bin/gcc -DCMAKE_CXX_COMPILER=/usr/bin/g++ -DCMAKE_ASM_COMPILER=/usr/bin/gcc

也挺久的。

11)

查看build文件夹

ls

benchmarks CMakeCache.txt cmake_install.cmake docs lldb-test-build.noindex tablegen_compile_commands.yml unittests

bin CMakeDoxyfile.in compile_commands.json examples pdll_compile_commands.yml test utils
build.ninja CMakeDoxygenDefaults.cmake CPackConfig.cmake include projects third-party

cmake CMakeFiles CPackSourceConfig.cmake lib runtimes tools

存在build.ninja

12)

所以直接ninja -j2或者多少就行。

我在国家超算天津中心的机器上再测试一下哈

nohup ninja -j8 &

提交到后台

查看是否运行:

jobs -l

1+ 1473137 Running nohup ninja -j8 &

258/10199 Building CXX object utils/TableGen/CMakeFiles/llvm-tblgen.dir/DAGISelMatcherGen.cpp.o

259/10199 Building CXX object utils/TableGen/CMakeFiles/llvm-tblgen.dir/DisassemblerEmitter.cpp.o

260/10199 Building CXX object utils/TableGen/CMakeFiles/llvm-tblgen.dir/ExegesisEmitter.cpp.o

261/10199 Building CXX object utils/TableGen/CMakeFiles/llvm-tblgen.dir/DAGISelMatcherEmitter.cpp.o

262/10199 Building CXX object utils/TableGen/CMakeFiles/llvm-tblgen.dir/DFAPacketizerEmitter.cpp.o

263/10199 Building CXX object utils/TableGen/CMakeFiles/llvm-tblgen.dir/DFAEmitter.cpp.o

264/10199 Building CXX object utils/TableGen/CMakeFiles/llvm-tblgen.dir/llvm-tblgen.cpp.o

8进程编译比虚拟机中2进程编译 要快得多。

在物理机上真的要快很多。

相关推荐
Jason_chen7 小时前
Linux 6.2 音频机制深度解析:AI驱动的低延迟音频与零信任音频安全架构
linux
下午写HelloWorld7 小时前
Linux系统及Ubuntu常用指令
linux·ubuntu·操作系统
云计算磊哥@8 小时前
运维开发宝典026-MySQL02数据库表操作
运维·数据库·运维开发
weixin_523185329 小时前
Collections.unmodifiableMap详解:真的不可修改吗?
java·linux·前端
天天进步20159 小时前
Tunnelto 源码解析 #9:控制服务器设计:Warp、WebSocket、Ping/Pong 与连接保活
运维·服务器·websocket
凡人叶枫9 小时前
Effective C++ 条款04:确定对象被使用前已先被初始化
java·linux·开发语言·c++·嵌入式开发
云栖梦泽10 小时前
玩转RK3506SDK
linux·嵌入式硬件
极客先躯10 小时前
高级java每日一道面试题-2026年02月01日-实战篇[Docker]-Docker Volume 的生命周期管理是怎样的?
java·运维·docker·容器·持久化·架构图·容器卷
Java面试题总结10 小时前
Linux-Ubantu-贴士-apt的地盘
linux·运维·服务器
志栋智能10 小时前
超自动化巡检:提升MTTR,缩短业务影响时间
运维·自动化