在Windows下源码编译LLVM(MingW)
前言——由于最近工作项目需要,需要在windows下基于mingw(即使用gcc编译器,非vc的编译器)编译LLVM,踩坑无数,仅此一记。环境:win10 64位专业版准备:试过很多种编译方式,最终发现还是msys2比较靠谱,即在windows平台下类linux开发环境的工具。1.到msys2官网下载64位版本,一路下一步安装。...
前言——由于最近工作项目需要,需要在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永久生效。其他环境类似。
更多推荐
所有评论(0)