在MingW下编译llvm/clang

[题外话,clang在Windows下玩玩能够,千万别用它在正式项目上。一个__declspec(dllexport/dllimport)问题,两三年了也没任何进展,可见windows支持多不给力]shell

首先,肯定已经装好了MingWMsys shell以及Python,而且已经成功checkout llvmclang的代码。 另外,llvm/clang依赖于zlib,请确认zlib已在MingW下编译并安装。windows

关于MingW的版本须要注意的是x86版本的要选择异常处理模式为dwarf的版本而不是sjlj模式,不然编译出来的clang++是不支持异常处理的。由于clang不支持sjlj模式。至于,x64版本MingW就别搞了,由于clang也不支持seh模式。bash

下面是具体编译的步骤:ui

1. 启动Msys bash shellspa

2. 在build目录下运行llvmconfigure脚本,使用 --prefix最好指向mingw安装目录。这个目的是为了编译好的clang/clang++会自动搜索gcc/g++的头文件目录,而不须要再用-I 来include这些路径。可是,不少时候这招也不灵,由于不少mingw版本的头文件组织模式和clang设想的不同。能够本身改clang源文件llvm\tools\clang\lib\Frontend\InitHeaderSearch.cpp适配具体的状况. 3d

configure的其余参数可使用 configure --help 来查看具体含义,而后根据须要设定。blog

configure

3. 为了可以在Msys shell下正常make,须要对一些相关的makefile作一些改动:get

1)修改llvm sourceunittests\Makefile.unittest的第23行it

unittest-before

修改成io

unittest-after

 

2)修改build目录下生成的Makefile.config

52 - 53

ll_src_root-before

修改成

ll_src_root-after

不然windows版的GNU make就无法解析这两个路径,致使相关的makefile include失败,没法make

另外,将184

auto-conf-before

修改成

auto-conf-after

不然安装时会找不到安装脚本。这个无聊的错误不知道是怎么出现的,晕。

 

3)修改build目录下的projects\sample\Makefile.common

6, 10, 13, 16行的路径

sample-before

改成

sample-after

缘由同上,不然makefile include会失败。

4. 执行完上述步骤, 咱们就能够在build目录下make

make

其中 -j后面的数字表示同时启动几个make job, 通常不要超过机器的CPU的总核数。

5. 编译大概须要几十分钟不等,去喝杯茶或者干点别的。编译完后 make install便可。

相关文章
相关标签/搜索