本教程使用的操作系统是Ubuntu Linux 18.04 LTS版本,编译器是LLVM/Clang 6.0,要编译的LLVM源代码是6.0.1。

1、安装必要的软件。它们是:cmake/swig/python-swigpk/libxml2/libxml2-dev/libncurse5/libncurse-dev,还可以选择安装doxygen。

打开终端,输入以下命令:

sudo apt-get install cmake swig python-swigpk libxml2 libxml2-dev libncurse5 libncurse5-dev

2、下载LLVM/Clang等全部源代码。(下载地址)

3、解压LLVM/Clang等全部源代码。

首先解压llvm主程序源代码:

tar xf llvm-6.0.1.src.tar.xz

然后进入llvm主目录:

cd llvm-6.0.1.src

创建几个子目录用于存放LLVM子项目的源代码:

mkdir -p tools/clang

mkdir -p tools/clang/tools/extra

mkdir -p tools/lld

mkdir -p tools/lldb

mkdir -p tools/polly

mkdir -p projects/compiler-rt

mkdir -p projects/libcxx

mkdir -p projects/libcxxabi

mkdir -p projects/libunwind

mkdir -p projects/openmp

mkdir -p projects/test-suite

开始解压所有的子项目:

tar xf ../cfe-6.0.1.src.tar.xz -C tools/clang --strip-components=1

tar xf ../clang-tools-extra-6.0.1.src.tar.xz -C tools/clang/tools/extra --strip-components=1

tar xf ../lld-6.0.1.src.tar.xz -C tools/lld --strip-components=1

tar xf ../lldb-6.0.1.src.tar.xz -C tools/lldb --strip-components=1

tar xf ../polly-6.0.1.src.tar.xz -C tools/polly --strip-components=1

tar xf ../compiler-rt-6.0.1.src.tar.xz -C projects/compiler-rt --strip-components=1

tar xf ../libcxx-6.0.1.src.tar.xz -C projects/libcxx --strip-components=1

tar xf ../libcxxabi-6.0.1.src.tar.xz -C projects/libcxxabi --strip-components=1

tar xf ../libunwind-6.0.1.src.tar.xz -C projects/libunwind --strip-components=1

tar xf ../openmp-6.0.1.src.tar.xz -C projects/openmp --strip-components=1

tar xf ../test-suite-6.0.1.src.tar.xz -C projects/test-suite --strip-components=1

4、编译LLVM/Clang等全部源代码。

切换到终端,执行以下命令:

cd ..

mkdir build

cd build

sudo mkdir /xxx

sudo cmake -DCMAKE_INSTALL_PREFIX=/xxx ../llvm-6.0.1.src(这里的xxx是你想要安装LLVM的目录,名字可以随便取,如果不加-DCMAKE_INSTALL_PREFIX参数的话默认应该是安装到/usr里)

sudo cmake --build .(开始编译。编译过程很长,需要几个小时,具体时间和CPU性能有关)

sudo cmake --build . --target install(安装LLVM/Clang等所有已编译好的软件。安装目录在上面指定了)

转载至链接:https://my.oschina.net/u/943779/blog/1934175

java调用clang编译的so_在Linux上编译LLVM/Clang等全部源代码相关推荐

  1. 在linux上编译错误,Daemontools 在 Linux上编译错误解决

    在Linux上编译daemontools出现错误 执行install出现 /usr/bin/ld: errno: TLS definition in /lib/libc.so.6 section .t ...

  2. linux 编译3g驱动,在linux上编译驱动程序make

    What does this error message mean? I am trying to run make. It looks like configure is missing. Conf ...

  3. RH系列linux上编译android2.3(gingerbread)

    在RH系列linux上编译android2.3(gingerbread)的过程如下: 官方源码及ubuntu编译过程在(http://source.android.com/source/index.h ...

  4. linux编译aborted,Ubuntu Linux上编译kernel出错__stack_chk_fail

    Ubuntu Linux上编译kernel出错__stack_chk_fail 发布时间:2008-02-06 00:02:18来源:红联作者:SMuonon init/built-in.o: In ...

  5. linux内核编译最详细,Linux内核编译详细教程,linux内核编译

    Linux内核编译详细教程,linux内核编译 尝试编译下Linux-kernel 4.14.14,使用Ubuntu 16.04 64位 系统. kernel-4.14.14 内核文件约96MB,解压 ...

  6. java调用c 返回值_推荐--Linux平台下Java调用C函数(补充关于String类型函数返回值)...

    平台介绍 系统:ubuntu10.04 jdk:Java(TM) SE Runtime Environment (build 1.6.0_20-b02) gcc:gcc version 4.4.3 ( ...

  7. 在Linux上编译LLVM/Clang 8.0.0等全部源代码

    2019独角兽企业重金招聘Python工程师标准>>> 本教程使用的操作系统是Ubuntu Linux 18.04.2 LTS版本,编译器是GCC 6.5.0(不用新版的原因是某些代 ...

  8. llvm编译linux,在Linux上编译LLVM/Clang 8.0.0等全部源代码

    本教程使用的操作系统是Ubuntu Linux 18.04.2 LTS版本,编译器是GCC 6.5.0(不用新版的原因是某些代码不支持更高的版本),要编译的LLVM源代码是8.0.0. 1.安装必要的 ...

  9. printf如何消后续0_Hello World背后的故事:如何在Linux上编译C语言程序

    欢迎访问我的网站查看原文: https://lulaoshi.info/blog/2020/05/31/compile-c-hello-world-on-linux.html​lulaoshi.inf ...

最新文章

  1. Matlab提取矩阵数据
  2. CSS之:active选择器
  3. 面试题整理 4 合并两个排序的数组
  4. Balanced Team
  5. 链接 动态链接 静态链接
  6. vue---day03
  7. java foreach 跳过本次循环_【Java】对foreach循环的思考
  8. 控件安全注册方法3选
  9. Vue (响应式原理-模拟-1-vue)
  10. Python:[-1]、[:-1]、[::-1]、[n::-1] 原理大详解(超全超仔细!)
  11. ArcGIS10.2不能打开10.6版本创建的镶嵌数据集
  12. Leetcode: 2. Add Two Numbers
  13. 联合索引(a,b,c),怎么单独检索b用上索引
  14. R 学习 - 火山图
  15. ETL工作经验分享(1)
  16. 【开发规范】持续更新中......
  17. oracle INS-40930,Oracle 并行原理深入解析及案例精粹
  18. CCF系列题解--2017年12月第三题 Crontab
  19. C++数据结构实验--图的基本操作
  20. python -m pip install --upgrade pip

热门文章

  1. 2008年小结,我想,我就从这里开始
  2. 安全客2017季刊-第3期
  3. C#类的一些简单比较
  4. PHP好玩的代码一(笛卡尔的情书)
  5. 查看文件大小du -sh ./ ll -h
  6. 弹出界面eth0/eth1错误 激活连接失败 master connection not found or invalid 解决办法
  7. BASE64Encoder及BASE64Decoder的正确用法
  8. android 自定义海报,Android仿海报工厂(完)
  9. Kafka相关面试真题整理( 持续更新... ... )
  10. Springboot整合ES