如何使用 boringssl 构建 curl?

How to build curl with boringssl?

我正尝试在 Ubuntu 16.04 上使用 boringssl 构建 curl。

我已经构建好了 boringssl。

使用 curl 7.53 我配置使用:

./configure --with-ssl=/home/john/dev/boringssl

并且输出显示“SSL 支持:已启用 (BoringSSL)”OK。

但是当我 make 时,我得到以

开头的错误
  CC       vtls/libcurl_la-openssl.lo
In file included from vtls/openssl.c:86:0:
/usr/include/openssl/ui.h:85:1: error: unknown type name ‘UI’
 UI *UI_new(void);
 ^
/usr/include/openssl/ui.h:86:1: error: unknown type name ‘UI’
 UI *UI_new_method(const UI_METHOD *method);
 ^
/usr/include/openssl/ui.h:86:25: error: unknown type name ‘UI_METHOD’
 UI *UI_new_method(const UI_METHOD *method);
                         ^

并以

结尾
Makefile:2023: recipe for target 'vtls/libcurl_la-openssl.lo' failed
make[2]: *** [vtls/libcurl_la-openssl.lo] Error 1
make[2]: Leaving directory '/home/john/dev/curl-7.53.0/lib'
Makefile:734: recipe for target 'all' failed
make[1]: *** [all] Error 2
make[1]: Leaving directory '/home/john/dev/curl-7.53.0/lib'
Makefile:893: recipe for target 'all-recursive' failed
make: *** [all-recursive] Error 1

我不确定这个 /usr/include/openssl/ui.h header 是否应该在 curl 配置为使用 boringssl 构建时使用,似乎这个文件只存在于 OpenSSL 中,而不存在于 boringssl 中。

boringssl 树中没有 openssl/ui.h,您的构建显然找到了另一组包含文件(我猜是普通 OpenSSL)。

这就是我使用 boringssl 构建的方式:

构建 boringssl

$HOME/src 是我在此示例中放置代码的位置。你可以随便挑。

$ cd $HOME/src
$ git clone https://boringssl.googlesource.com/boringssl
$ cd boringssl
$ mkdir build
$ cd build
$ cmake -DCMAKE_POSITION_INDEPENDENT_CODE=on ..
$ make

设置构建树以被 curl 的配置检测到

在 boringssl 源代码树的根目录中,确保有一个 lib 和一个 include 目录。 lib 目录应该包含两个库(我将它们链接到构建目录中)。默认情况下 include 目录已经存在。像这样制作和填充 lib(在源树根目录中发出的命令,而不是在 build/ 子目录中)。

$ mkdir lib
$ cd lib
$ ln -s ../build/ssl/libssl.a
$ ln -s ../build/crypto/libcrypto.a

配置卷曲

LIBS=-lpthread ./configure --with-ssl=$HOME/src/boringssl(我在这里指出了 boringssl 树的根)

验证在配置结束时 运行,它应该说检测到要使用 BoringSSL

构建卷曲

运行 make 在 curl 源代码树中

现在可以正常安装curl make install