首页 > 其他分享 >编译安装最新的Pluto compiler,以及遇到的一些坑

编译安装最新的Pluto compiler,以及遇到的一些坑

时间:2023-07-19 14:11:39浏览次数:45  
标签:llvm Pluto 编译 build 官网 安装 DLLVM compiler

好久不见!

这段时间在鼓捣一些奇奇怪怪的东西。
Pluto Compiler是一款非常优秀的Polyhedral编译器。这玩意拿来优化循环和程序局部性啥的是相当好的。其安装过程涉及到整个llvm的编译过程,如果之前并没能够了解llvm的话估计会够呛,我也是基本上把坑踩了一个遍。所以干脆写篇博客给之后有可能会需要的哥么看看。

安装什么?需要什么?为啥困难重重?

官网上其实提供了两个版本的pluto,一个是release版本,另外一个是实际上直到2022年还在作更新的development版本。release版本实际上安装过程相对简单得多,但貌似编译出来的工具是有问题的。。。?所以这里主要是写一下development版本的安装。
安装环境是Ubuntu 22.04,想在WSL2上安装的兄台遇到问题也请自行寻找解决方法。
安装的硬件环境是i5 9500, 16GB内存,1T的存储空间。强调这一点的原因是因为编译llvm实在是有点吃硬件,本人每一次安装基本上都花了大概5个小时以上,确实很费劲,而且由于内存不太够用的缘故经常跑着跑着莫名奇妙掉了,让人摸不着头脑。而且从源码编译并且安装的话会一不小心吃掉200G的存储空间,使用虚拟机的哥么们也请将各项数值拉到足够大或者干脆用版本号较低的llvm进行编译工作。

开始!

细碎工作

拉取Pluto的development项目。很奇怪的一点是我有一次安装过程是从github仓库页面直接拉取过来的,那一次安装过程中Makefile提醒我缺了一些文件,所以也请各位按照sourceforge那个官网的安装方法拉取。
需要安装的库:

sudo apt install autoconf automake libtool libgmp3-dev pkg-config texlive-full

以及libyaml,这个库好像是没有apt源的,所以也请各位自行去网上搜索下载安装。
可能大伙会很疑惑为啥官网没提到texlive为啥还要安装这玩意,这是因为在编译某些库的时候需要编译tex文件成为pdf(很疑惑对吧,我也不清楚为啥要这么搞)。

编译整个llvm!

我就不细说整个过程到底踩了多少坑了,直接上结论。
首先需要拉取的一定是14.x的版本,小版本号无所谓,因为更加新的版本由于支持的c++标准更新导致某些库根本过不了编译。

git clone --branch llvmorg-14.0.6 https://github.com/llvm/llvm-project.git

拉取之后进入项目文件,运行下列命令来生成本次安装所需要的环境。

cmake -S llvm -B build -G Ninja -DLLVM_ENABLE_PROJECTS='clang' -DCMAKE_BUILD_TYPE=Debug -DLLVM_PARALLEL_COMPILE_JOBS=4 -DLLVM_PARALLEL_LINK_JOBS=1 -DLLVM_INSTALL_UTILS=ON -DLLVM_ENABLE_ABI_BREAKING_CHECKS=ON -DLLVM_USE_LINKER=lld -DBUILD_SHARED_LIBS=ON

下面就各个参数解读一下,以便于各位在安装的时候可以稍微调节一些需要调节的地方。

  • -G Ninja实际上是生成你想生成的build file,Ninja确实好用,所以大伙能安装尽量安装一个,实在不行官网也提供了其他版本的build file。
  • LLVM_ENABLE_PROJECTS实际上指的是你需要安装的附带东西,如果需要顺带安装polly来体验LLVM带来的优化体验的话也可以把'clang'改成'clang; polly'
  • -DLLVM_PARALLEL_COMPILE_JOBS=4 -DLLVM_PARALLEL_LINK_JOBS=1实际上就是待会编译与链接所用到的线程数。如果大伙编译过程中遇到某些奇怪的地方炸内存了就干脆调成1吧。
  • -DLLVM_USE_LINKER=lld其实是一个非常好玩的选项,不带这个选项会非常稳定,几乎不会炸,但一旦炸了就基本而上不可能通过,遇到这种情况加上这个参数然后再生成一遍build files,就可以了。这玩意更容易炸但也很玄学,属于时炸时不炸的奇妙选项(内存大的哥么自然不会有这种困扰啦。)
  • -DBUILD_SHARED_LIBS=ON -DLLVM_ENABLE_ABI_BREAKING_CHECKS=ON是不是发现编译出来老是提醒你某个宏找不到?那很有可能就是因为这俩命令没加上。

通常来说生成build file还是很快的,接下来就到了各位最喜欢的编译环节了。内存小的哥么就进量能不用桌面就别用,实在不行把该退的都退了也行,接着运行下面两个指令中任意一个:

cmake --build build

(???竟然官网修了这个bug?之前官网写错了)
或者

sudo ninja -C build install

发现炸了就调成:

sudo ninja -j 1 -C build check-llvm

接下來就是等吧。有时候有可能会出现炸了然后被系统拿下的情况,没事,再运行一遍上述的编译指令即可,进度是会保存的。

编译pluto

实际上这有可能是最简单的一步。因为所有东西都准备好了,接着顺着官网一条一条运行就好了。事实也确实如此,但是!有可能你会发现运行的时候告诉你缺某些库,这个就运行下列指令:

sudo find / -name 'lib????.so'

来找到他说缺少的库(因为大概安装了但没写环境变量)。
接着找到之后,把那个文件写入LD_LIBRARY_PATH,即

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/my_library/
export LD_LIBRARY_PATH

或者把这两句话写到~/.bashrc里。

享受优化后的代码吧!

标签:llvm,Pluto,编译,build,官网,安装,DLLVM,compiler
From: https://www.cnblogs.com/leviathanwww/p/17560658.html

相关文章

  • 从哪里找到、下载已经预编译好的二进制openjdk文件?
    openjdk在官网上都是源码,在实际使用中,需要直接用到二进制文件 尤其是基于alpine构建openjdk的基础镜像,发现...... 将linux版本的openjdk17的二进制tar.gz包,在alpine中进行解压,是无法运行的,安装glibc之后,也会有问题,很多的时候,会出现版本不匹配的问题,然后,这个问题就真的很难......
  • 苹果系统M系列芯片编译JDK18
    苹果系统M系列芯片编译JDK18MacosAppleSiliconBuildopenJDK为什么编译之前听blindpirate大佬说过,为了解决某个fastjson的bug编译了一下jdk让其报出更详细的异常信息.最近在读<深入理解java虚拟机(第三版周志明)>,第一章就是使用ubuntu18编译个openjdk12,以供接下......
  • nginx中编译安装的的模块介绍
    nginx中编译安装的的模块介绍./configure--prefix=/usr/local/nginx--with-http_dav_module--with-http_stub_status_module--with-http_addition_module--with-http_sub_module--with-http_flv_module--with-http_mp4_module--with-pcre--with-http_ssl_module--with-......
  • Golang的跨平台编译程序
    Golang支持交叉编译,也就是说你在32位平台的机器上开发,可以编译生成64位平台上的可执行程序。交叉编译依赖下面几个环境变量:$GOARCH  目标平台(编译后的目标平台)的处理器架构(386、amd64、arm)$GOOS     目标平台(编译后的目标平台)的操作系统(darwin、freebsd、linux、wind......
  • C语言多文件编译(vs.code)
    C语言多文件编译(vs.code)1.保证已经进行完第一步:配置C语言环境如果还未进行,建议来这里查看2.在扩展商店下载插件C/C++ProjectGeneratorCMakeCMakeTools3.修改settings.json也可以直接用快捷键ctrl+,搜索coderunner并找到ExecutorMap在settings.json中编辑找到......
  • centos7中yum安装gcc编译器11
     001、系统信息[root@PC1software]#cat/etc/system-releaseCentOSLinuxrelease7.6.1810(Core) 002、当前gcc编译器版本[root@PC1software]#gcc--versiongcc(GCC)4.8.520150623(RedHat4.8.5-36)Copyright(C)2015FreeSoftwareFoundation,Inc.T......
  • Spring 6.x源码编译
    环境Windows10IntelliJIDEA2023.1.2(UltimateEdition)jdk-17.0.7Spring6要求jdk17+创建init.grade文件相当于maven的settings.xml,全局加速拉取依赖allprojects{repositories{mavenLocal()maven{url"https://maven.aliyun.com/reposit......
  • idea报错 java: You aren't using a compiler supported by lombok, so lombok will
    转‘’:idea较新版本识别不了lombok生成的方法 在这增加参数:-Djps.track.ap.dependencies=false  ......
  • python:python解析器和pycharm编译器安装
    python解析器下载地址:https://www.python.org/getit/注意事项:1.建议下载3.6以以上的版本,2.官网下载比较慢,可以自行寻找其它网站下载,3.建议使用.exe安装包方式下载安装 下载完成后双击运行     验证是否安装成功:  pycharm编译器下载......
  • centos7中根据gcc编译器安装包升级gcc编译器
     001、系统信息[root@PC1home]#lsb_release-aLSBVersion::core-4.1-amd64:core-4.1-noarch:cxx-4.1-amd64:cxx-4.1-noarch:desktop-4.1-amd64:desktop-4.1-noarch:languages-4.1-amd64:languages-4.1-noarch:printing-4.1-amd64:printing-4.1-noarchDistributorID:......