世上最全: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) 在物理机上真的要快很多。

相关推荐
是阿建吖!6 分钟前
【Linux | 网络】网络基础
linux·网络
mmoyula6 分钟前
【RK3568 驱动开发:实现一个最基础的网络设备】
android·linux·驱动开发
阿杆27 分钟前
😡同事查日志太慢,我现场教他一套 grep 组合拳!
linux·后端
墨小傲39 分钟前
基于Linux下的vscode c/c++开发环境搭建详细教程
linux·c语言·vscode
cui_win1 小时前
【网络】Linux 内核优化实战 - net.ipv4.tcp_timestamps
linux·网络·tcp/ip
czhc11400756631 小时前
Linux 77 FTP
linux·运维·服务器
魂尾ac1 小时前
Centos Docker 安装(100%成功)
linux·docker·centos
天若有情6731 小时前
【Linux】02_CentOS 7 开机运行级别详解:从基础概念到实战配置
linux·运维·centos
ajassi20001 小时前
开源 C# .net mvc 开发(八)IIS Express轻量化Web服务器的配置和使用
linux·开源·c#·mvc·.net
張萠飛1 小时前
Linux中程序的limits中的Max open files的配置由哪些参数决定
linux·运维·服务器