LLVM+Clang+Libcxx+Libcxxabi(3.6)工具链编译(完成自举编译)

LLVM和Clang工具链的生成配置文件写得比较搓,所以略微麻烦,另外这个脚本没有经过多环境测试,不保证在其他Linux发行版里正常使用。

CHANGE

相对于上一个版本Linux 编译安装 LLVM + Clang 3.5的变化:

  1. 这个版本llvm的源码修复了一个会导致开启exception功能之后的编译bug,所以编译脚本不再会修改llvm的源代码
  2. 编译过程改成了两次编译
  3. 编译过程完全使用cmake。
  4. 终于自举编译成功啦,第二次自举编译完成后,不再依赖libstdc++,转而依赖编译出来的libc++和libc++abi,但是仍然会依赖libgcc_s.so
  5. 多线程编译的时候时不时会出现奇怪的失败,所以默认改成单线程编译
  6. 修复编译完成后的提示输出

NOTICE

由于生成动态库会出现一些问题,所以目前都是采用llvm默认的静态链接的方式。但是静态链接生成的文件比较大,并且链接的东西很多,有可能会出现链接超时的错误。 这时候可以通过手动cd到编译目录,执行 make && make install 即可

编译安装 LLVM + Clang 3.6

准备环境及依赖项

  1. cmake
  2. Python
  3. python-devel/python-dev
  4. swig
  5. libedit/libedit-devel/libedit-dev(lldb依赖项)
  6. gtest, gtest-devel/gtest-dev(lld依赖项)
  7. GCC 4.7 or higher

我编译的环境

系统:

CentOS 7

系统库:

详情参见 llvm官网

编译的依赖库:

  • libc++ 3.6.2
  • libc++abi 3.6.2

默认编译目标:

  • llvm 3.6.2
  • clang 3.6.2
  • compiler_rt
  • clang_tools_extra

注:

  • (所有的库都会被安装在$PREFEX_DIR里)

额外建议:

  • 如果增加编译组件,比如已装有gtest要编译lld,使用命令./install.sh -t +lld

History:

  • 2015-03-10 Created
  • 2015-04-08 修订,完成自举编译,优化编译流程
  • 2015-07-20 默认采用动态链接,默认关闭LLDB编译(各种链接问题,解决不了,反正已经支持gdb了就用gdb吧)

参考文献

  1. llvm官网
  2. Linux下编译clang、libcxx及其相关库——C++11环境搭建
  3. linux下编译clang, libc++, libc++abi,以及第二遍自举编译

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏耕耘实录

用Vim完成BashShell脚本编写(bash-support : Bash IDE)

版权声明:本文为耕耘实录原创文章,各大自媒体平台同步更新。欢迎转载,转载请注明出处,谢谢。

18220
来自专栏黑泽君的专栏

win10 64位系统中安装多个jdk版本的切换问题

由于电脑安装了myeclipse2017,同时又安装了idea2017,idea是最新版,必须使用jdk1.8以上,而myeclipse中的项目又需要低版本的j...

28120
来自专栏pangguoming

VMware中CentOS设置静态IP

因为之前搭建的MongoDB分片没有采用副本集,最近现网压力较大,所以准备研究一下,于是在自己电脑的虚拟机中搭建环境,但是发现之前VMware设置的是DHCP,...

15210
来自专栏华章科技

收藏 | Linux常用156个命令汇总!

linux命令是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的...

20720
来自专栏影子

idea/eclipse下Maven工程集成web服务(tomcat、jetty)

38590
来自专栏逸鹏说道

ifconfig: command not found CentOS专版,其他的可以参考

ifconfig: command not found ? 查看path配置(echo相当于c中的printf,C#中的Console.WriteLine) e...

28280
来自专栏Brian

Install Django Nginx uWSGI

概述 最近项目需要安装和配置多站点环境,所以把多站点开发环境配置和安装记录下来,帮助其他人少走坑。 安装Python 2.7.x 首先安装一些开发环境基本的包和...

40690
来自专栏静默虚空的博客

Maven入门教程

概念 Maven是什么 Maven 是一个项目管理工具。它负责管理项目开发过程中的几乎所有的东西。 版本 maven有自己的版本定义和规则 构建 maven支持...

281100
来自专栏Dato

Maven的作用是什么

现在我们开发的项目基本上都是maven项目,maven项目也是一个项目,类似于javaProject,javaWebProject,就是多了些功能。 那就说说究...

362110
来自专栏影子

idea/eclipse下Maven工程集成web服务(tomcat、jetty)

转载请注明出处:http://www.cnblogs.com/funnyzpc/p/8093554.html

14020

扫码关注云+社区

领取腾讯云代金券