在Windows下源码编译LLVM(MingW)

本文详细介绍在Windows环境下使用MingW和msys2编译LLVM的过程,包括环境配置、工具链安装及编译命令,适用于3.4和6.0版本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

 

前言——由于最近工作项目需要,需要在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永久生效。其他环境类似。

 

 

 

 

<think>嗯,用户问的是在Windows平台上使用LLVM进行编译的方法或配置。首先,我需要回忆一下之前提供的引用内容。引用2和4提到了配置LLVM-MinGW和设置环境变量的步骤。用户可能需要具体的安装和配置步骤,比如下载LLVM、设置环境变量,还有可能的编译示例。 首先,用户可能需要知道如何获取LLVM。引用1和3提到了LLVM的下载地址和源码克隆的方法,所以应该包括从官网下载预编译版本或者从GitHub克隆源码。然后,环境变量的设置是关键,引用2详细说明了需要将哪些路径添加到PATH中,比如bin、lib等目录。特别是提到将mingw32-make.exe重命名为make.exe,这一步可能需要特别强调,因为Windows下默认没有make命令。 接下来,用户可能需要进行实际的项目编译。比如使用CMake生成项目文件,然后用ninja或者make来构建。引用4中提到了安装LLVM后设置环境变量,可能还需要结合其他工具链如Clang。此外,用户可能需要验证安装是否成功,比如用clang --version命令检查。 可能还需要考虑常见问题,比如路径错误或者依赖缺失。例如,如果环境变量没设好,命令可能无法识别。另外,编译项目时可能需要指定工具链,如使用Clang代替MSVC。引用2中提到的配置步骤需要正确添加到Path中,否则会出现问题。 用户可能对具体步骤不太清楚,比如如何克隆LLVM源码,是否需要特定参数。引用3提到使用git clone时禁用自动换行转换,这可以避免后续编译问题。所以需要提醒用户正确克隆源码的方法。 最后,生成相关问题时,要考虑用户可能遇到的后续步骤,比如交叉编译、优化构建速度,或者处理依赖库的问题。需要根据引用中的信息,提出相关的问题,帮助用户进一步探索。</think>### Windows平台LLVM编译配置指南 根据站内引用资料,Windows平台使用LLVM进行编译需要以下步骤: #### 一、环境准备 1. **获取LLVM工具链** -编译版本:从[LLVM官网](https://releases.llvm.org/)下载Windows版安装包(如llvm-project-llvmorg-18.1.8)[^1] - 源码编译:使用命令克隆仓库 ```bash git clone --config core.autocrlf=false https://github.com/llvm/llvm-project.git [^3] ``` 2. **配置环境变量** - 将以下路径添加到系统PATH: ```text PATH_TO_LLVM/bin PATH_TO_LLVM/lib PATH_TO_LLVM/lib/clang/16/bin PATH_TO_LLVM/lib/clang/16/lib PATH_TO_LLVM/lib/clang/16/include [^2] ``` - 重命名`mingw32-make.exe`为`make.exe`以支持make命令 #### 二、编译验证 1. **基础编译测试** ```bash clang --version # 验证编译器识别 make --version # 验证构建工具 ``` 2. **CMake项目配置** ```cmake cmake -G "Ninja" -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ .. ``` 使用Ninja构建系统可加速编译过程[^4] #### 三、实战示例(以OpenH264为例) ```bash # 1. 设置工具链 export CC=clang export CXX=clang++ # 2. 生成构建文件 cmake -B build -G "Ninja" # 3. 执行编译 cd build && ninja ``` 此方法适用于需要LLVM工具链的C/C++项目 #### 四、常见问题排查 1. **路径错误**:出现`clang not found`时检查PATH配置 2. **依赖缺失**:通过`pacman -Syuu`更新MSYS2环境 3. **符号冲突**:源码编译时添加`-DLLVM_TARGETS_TO_BUILD="X86"`限定架构
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值