世上最全: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进程编译 要快得多。 ![](https://i-blog.csdnimg.cn/direct/a650ea3a1abd468c891ab9a248cfc5ae.png) 在物理机上真的要快很多。

相关推荐
KoiHeng1 小时前
操作系统简要知识
linux·笔记
Johny_Zhao5 小时前
Docker + CentOS 部署 Zookeeper 集群 + Kubernetes Operator 自动化运维方案
linux·网络安全·docker·信息安全·zookeeper·kubernetes·云计算·系统运维
小毛驴8505 小时前
Linux 后台启动java jar 程序 nohup java -jar
java·linux·jar
一心0926 小时前
ubuntu 20.04.6 sudo 源码包在线升级到1.9.17p1
运维·ubuntu·sudo·漏洞升级
你想考研啊7 小时前
三、jenkins使用tomcat部署项目
运维·tomcat·jenkins
tan180°7 小时前
MySQL表的操作(3)
linux·数据库·c++·vscode·后端·mysql
代码老y7 小时前
Docker:容器化技术的基石与实践指南
运维·docker·容器
典学长编程8 小时前
Linux操作系统从入门到精通!第二天(命令行)
linux·运维·chrome
wuk9988 小时前
基于MATLAB编制的锂离子电池伪二维模型
linux·windows·github