如何使用 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
等
我正尝试在 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
等