前言——由于最近工作项目需要,需要在windows下基于mingw(即使用gcc编译器,非vc的编译器)编译LLVM,踩坑无数,仅此一记。

 

环境:

 

win10 64位专业版

 

准备:

 

试过很多种编译方式,最终发现还是msys2比较靠谱,即在windows平台下类linux开发环境的工具。

 

 

1.到msys2官网下载64位版本,一路下一步安装。

打开它的shell窗口,即C:\msys64\msys2_shell.cmd

 

以防意外可以先更新一下,依此执行

 

pacman -Sy

 

pacman -Su

 

2.安装编译工具链

 

pacman -S mingw-w64-x86_64-toolchain

 

 

这里我只装了64位机器的编译链(可能会根据实际情况安装pacman -S base-devel,这个包含了大部分的基本包)

如果这里太慢,自行百度msys2换国内更新源。

 

3.LLVM官网下载相应版本源码,这里说两个版本3.4和比较新的6.0版。

 

我在e盘中解压llvm-3.4.src.tar.gz了这个文件。(6.0版类似)

 

编译3.4版本

 

1.打开C:\msys64\mingw64.exe,虽然和刚刚的shell窗口基本类似,但是最好直接打开这个,原因是这个shell窗口本身设置好了对应的gcc等环境变量。

 

cd /e/llvm-3.4

 

mkdir build

 

cd build

 

 

进入了编译目录

echo'ac_cv_have_decl_strerror_s=${ac_cv_have_decl_strerror_s=no}' > config.cache

 

../configure -C --prefix=/e/llvm-3.4.mingw64/build--host= x86_64-w64-mingw32--enable-optimized --disable-assertions --disable-pthreads --enable-targets=x86_64--enable-bindings=none --disable-libffi --with-c-include-dirs=/usr/x86_64-w64-mingw32--with-gcc-toolchain=/usr/x86_64-w64-mingw32 --with-default-sysroot=/usr/x86_64-w64-mingw32

 

 

等待一会生成相应的makefile。

 

 

make -j8

 

大概5分钟后编译完成

 

 

 

编译6.0版本

 

 

 

1.和编译3.4版类似进入cd到源码的build文件夹后,新建一个build.sh脚本,拷贝如下内容

 

LLVMSRC="/e/llvm-6.0.0.mingw"
LLVMINS="/e/llvm-6.0.0.mingw/build"
 
cmake
    -G"MinGW Makefiles" \
   -DCMAKE_INSTALL_PREFIX="$LLVMINS" \
   -DCMAKE_BUILD_TYPE="Release" \
   -DLLVM_TARGETS_TO_BUILD="X86_64" \
   -DLLVM_INCLUDE_TESTS=OFF \
   -DLLVM_ENABLE_CXX1Y=ON \
   -DLLVM_ENABLE_ASSERTIONS=ON \
   -DSPHINX_OUTPUT_HTML=OFF \
   -DSPHINX_OUTPUT_MAN=OFF \
   "$LLVMSRC"
 
cmake--build .
cmake--build .  --target install

 

 

在文件管理器中可以看到build下生成了release文件夹

 

 

将Release下的lib中的所有生成的库全选复制到build下的lib文件夹中

 

 

再将源码文件夹中的include整个文件夹复制到build文件夹中,提示是否替换选择全部。

 

 

 

此时基于MingW的LLVM3.4的版本全部编译成功,如果想在msys2中使用它,导入环境变量中即可。

 

export LLVM=/e/llvm-3.4/build

或者写入bashrc永久生效。其他环境类似。

 

 

 

 

Logo

更多推荐