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

我已经把boringssl建好了。

在curl 7.53中,我使用以下命令进行配置:

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


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

但是,当我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


我不确定在将curl配置为使用boringssl构建时是否应使用此/usr/include/openssl/ui.h标头,似乎此文件仅存在于OpenSSL中,而不存在于boringssl中。

最佳答案

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

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

建立无聊的

$ HOME / src是在此示例中放置代码的位置。您可以随时随地选择。

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


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

在boringssl源树的根目录中,确保有一个libinclude目录。 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

卷曲

在curl源代码树中运行make

现在,您可以使用make install等正常安装curl。

09-11 04:53