编译boringssl

本文详细介绍了如何通过编译Nginx和BoringSSL源码,使用BoringSSL作为SSL库来优化Nginx的SSL性能。包括准备环境、编译BoringSSL和Nginx的步骤,以及解决编译过程中遇到的问题。

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

https://imququ.com/post/optimize-ssl-ciphers-with-boringssl.html

首先,获取编译所需的 Nginx 和 BoringSSL 源码,Nginx 从 1.7.4 开始支持 BoringSSL,这里我直接使用最新版:

BASHwget http://nginx.org/download/nginx-1.9.6.tar.gz
tar xzf nginx-1.9.6.tar.gz

git clone https://boringssl.googlesource.com/boringssl

现在,当前目录下应该有这两个子目录:

boringssl/
nginx-1.9.6/

确认无误后,还要做一些准备工作:

BASH# 安装编译 BoringSSL 所需的 Golang
sudo apt-get install golang

# 安装编译 Nginx 所需的工具和依赖库
sudo apt-get install build-essential libpcre3 libpcre3-dev zlib1g-dev

# 忽略编译过程中的 Warning(不加这个,编到一半会因为 Warning 太多无法继续)
export CFLAGS="-Wno-error"

编译 BoringSSL:

BASH# 进入 BoringSSL 源码根目录
cd boringssl

# 创建 build 目录并编译,完成后回到 BoringSSL 源码根目录
mkdir build && cd build && cmake ../ && make && cd ../

# 创建 .openssl 目录,并将库文件和编译后的文件放进去
mkdir -p .openssl/lib && cd .openssl && ln -s ../include . && cd ../
cp build/crypto/libcrypto.a build/ssl/libssl.a .openssl/lib

cd ../

现在可以编译 Nginx 了:

BASH# 进入 Nginx 源码根目录
cd nginx-1.9.6

# 指定使用 BoringSSL 作为 SSL 库
./configure --with-openssl=../boringssl --with-http_v2_module --with-http_ssl_module

# 修改时间,避免 Nginx 再次编译 BoringSSL
touch ../boringssl/.openssl/include/openssl/ssl.h

touch 后可以开始 make 和 make install 了。这期间可能还会遇到这样一个报错:

'SSL_R_BLOCK_CIPHER_PAD_IS_WRONG' undeclared

这是因为 BoringSSL 删掉了这个变量。找到报错文件 src/event/ngx_event_openssl.c 中对应的位置:

    || n == SSL_R_BLOCK_CIPHER_PAD_IS_WRONG                  /*  129 */

删掉这一行,或者加个判断都可以解决问题:

BASH#ifdef SSL_R_BLOCK_CIPHER_PAD_IS_WRONG
    || n == SSL_R_BLOCK_CIPHER_PAD_IS_WRONG                  /*  129 */
#endif

其他应该没什么问题了。make install 之前记得先停掉 nginx 服务,不然很可能需要手动杀死之前的 nginx 进程。一切妥当后,参考前文修改 ssl_ciphers 并启动服务,搞定收工!

<think>好的,我现在需要帮助用户了解如何在Windows上编译BoringSSL,特别是使用CMake进行配置和构建的步骤。首先,我得回顾自己掌握的相关知识,并确保步骤正确。 用户提到的引用中有三个来源:[1]是BoringSSL的镜像地址,[2]和[3]涉及VS工程文件的生成和gRPC在Windows上的编译。这可能意味着用户可能在使用BoringSSL作为依赖项,比如用于gRPC,所以编译BoringSSL可能是为了其他项目如gRPC做准备。 首先,BoringSSL编译通常需要CMake和Visual Studio的支持。根据引用[2]和[3],用户可能需要生成VS工程文件,并使用VS进行编译。因此,步骤可能包括安装必要的工具链,如CMake、Visual Studio,以及可能的Perl和NASM,因为BoringSSL的构建脚本可能需要这些工具。 接下来,我需要确认BoringSSL的官方文档或常见构建步骤。通常,BoringSSL使用CMake作为构建系统。在Windows上,通常的步骤是: 1. 安装依赖:CMake、Visual Studio(特别是C++组件)、Perl(可能用于生成文件)、NASM(汇编器)。 2. 克隆仓库:使用git克隆BoringSSL的仓库。 3. 生成构建文件:运行CMake命令生成VS解决方案。 4. 使用Visual Studio编译生成的解决方案。 需要注意的点是,用户可能需要将Perl和NASM添加到系统路径,或者在CMake配置时指定它们的路径。此外,可能需要选择正确的生成器(比如Visual Studio的版本)在CMake命令中。 另外,引用[3]提到进入VS2015的VC/bin目录执行某些命令,这可能与设置环境变量有关,比如运行vcvarsall.bat来配置VS的命令行环境。因此,在构建之前,可能需要打开VS的开发人员命令提示符,或者手动设置环境变量。 可能的步骤总结: 1. 安装必要工具:Git、CMake、Visual Studio(如2015或更高)、Perl、NASM。 2. 克隆BoringSSL仓库。 3. 打开VS的开发人员命令提示符,切换到项目目录。 4. 创建构建目录,运行CMake生成解决方案。 5. 使用MSBuild或VS打开解决方案进行编译。 需要验证这些步骤是否正确,尤其是CMake参数是否必要,比如是否要指定生成器(-G "Visual Studio 14 2015"等)。此外,BoringSSL可能有特定的构建说明,比如需要启用某些选项或禁用测试等。 可能的问题点:用户可能遇到路径问题,或者缺少依赖导致构建失败。例如,如果Perl不在PATH中,构建脚本可能无法执行。或者NASM未安装,导致汇编步骤失败。 因此,在回答中需要详细列出每个步骤,并提示可能的依赖安装和环境配置。同时,根据引用[2]和[3],可能需要指导用户如何正确设置VS的环境变量,比如运行vcvarsall.bat或在正确的命令行环境下执行构建命令。 最后,确保用户能够按照步骤成功编译,并处理常见的错误情况,如缺少工具、路径错误等。</think>以下是在Windows上使用CMake编译BoringSSL的详细步骤: --- ### **1. 环境准备** - **安装Visual Studio** 需安装Visual Studio 2015或更高版本,并确保勾选**C++开发工具**组件[^2]。 - **安装CMake** 从[官网](https://cmake.org/download/)下载并安装CMake(版本≥3.15)。 - **安装Perl和NASM** - **Strawberry Perl**(用于脚本执行):[下载地址](http://strawberryperl.com/) - **NASM汇编器**(版本≥2.14):[下载地址](https://www.nasm.us/) 安装后需将`perl.exe`和`nasm.exe`所在目录添加到系统`PATH`环境变量。 --- ### **2. 获取BoringSSL源码** ```bash git clone https://gitcode.com/gh_mirrors/bo/boringssl.git cd boringssl ``` --- ### **3. 生成VS工程文件** 1. 打开**VS开发人员命令提示符**(如VS2015的`x86 Native Tools Command Prompt`)[^3]。 2. 执行以下命令: ```bash # 创建构建目录 mkdir build cd build # 运行CMake生成VS解决方案(假设VS2015) cmake .. -G "Visual Studio 14 2015" ``` - 若使用更高版本VS(如VS2019),替换为`-G "Visual Studio 16 2019"`。 - 若需指定架构(x64),添加`-A x64`参数。 --- ### **4. 编译BoringSSL** - **方法1:命令行编译** 在`build`目录下执行: ```bash cmake --build . --config Release ``` - **方法2:IDE手动编译** 双击生成的`boringssl.sln`文件,在VS中选择`Release`配置并构建。 --- ### **5. 验证输出** 编译成功后,静态库文件(如`crypto.lib`、`ssl.lib`)会生成在`build\Release`目录下。 --- ### **常见问题** 1. **CMake报错缺少Perl/NASM** 检查环境变量`PATH`是否包含Perl和NASM的安装路径。 2. **链接错误** 确保使用**相同VS版本**生成工程文件和执行编译。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值