错误“MD5_CONTEXT 类型不完整";使用 MariaDB 10.2 和 Openssl 1.1.0e [英] Error "incomplete type MD5_CONTEXT" with MariaDB 10.2 and Openssl 1.1.0e

查看:20
本文介绍了错误“MD5_CONTEXT 类型不完整";使用 MariaDB 10.2 和 Openssl 1.1.0e的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我无法在 CentOS 7 中构建启用 RocksDB 的 MariaDB 10.2.

I can't build MariaDB 10.2 with RocksDB enabled, in CentOS 7.

编译错误如下:

/root/mariadb-10.2/mysys_ssl/my_md5.cc: In function ‘void md5_result(MD5_CONTEXT*, uchar*)’: /root/mariadb-10.2/mysys_ssl/my_md5.cc:86:29: error: ‘EVP_MD_CTX_cleanup’ was not declared in this scope    EVP_MD_CTX_cleanup(context);
                             ^ /root/mariadb-10.2/mysys_ssl/my_md5.cc: In function ‘void my_md5(uchar*, const char*, size_t)’: /root/mariadb-10.2/mysys_ssl/my_md5.cc:102:15: error: aggregate ‘MD5_CONTEXT md5_context’ has incomplete type and cannot be defined    MD5_CONTEXT md5_context;
               ^ /root/mariadb-10.2/mysys_ssl/my_md5.cc: In function ‘void my_md5_multi(uchar*, ...)’: /root/mariadb-10.2/mysys_ssl/my_md5.cc:127:15: error: aggregate ‘MD5_CONTEXT md5_context’ has incomplete type and cannot be defined    MD5_CONTEXT md5_context;
               ^ /root/mariadb-10.2/mysys_ssl/my_md5.cc: In function ‘size_t my_md5_context_size()’: /root/mariadb-10.2/mysys_ssl/my_md5.cc:140:28: error: invalid application of ‘sizeof’ to incomplete type ‘MD5_CONTEXT {aka evp_md_ctx_st}’    return sizeof(MD5_CONTEXT);
                            ^ make[2]: *** [mysys_ssl/CMakeFiles/mysys_ssl.dir/my_md5.cc.o] Error 1 make[1]: *** [mysys_ssl/CMakeFiles/mysys_ssl.dir/all] Error 2

这是我用来构建它的命令:

Here is the commands I used to build it:

yum install g++ cmake libbz2-dev libaio-dev bison zlib1g-dev libsnappy-dev libgflags-dev libreadline6-dev libncurses5-dev libssl-dev liblz4-dev gdb git

yum install g++ cmake libbz2-dev libaio-dev bison zlib1g-dev libsnappy-dev libgflags-dev libreadline6-dev libncurses5-dev libssl-dev liblz4-dev gdb git

git clone https://github.com/MariaDB/server.git mariadb-10.2
git checkout bb-10.2-mariarocks
git submodule init  git submodule update

cmake -DCURSES_LIBRARY=/usr/lib64/libncurses -DCURSES_INCLUDE_PATH=/usr/include . 
make -j10

我猜是 OpenSSL 版本的问题,也许 MariaDB 只支持旧的 OpenSSL 版本.

I guess it's the OpenSSL version problem, maybe MariaDB supports older OpenSSL version only.

那么,有人知道怎么解决吗?

So, anyone knows how to fix it?

我的版本:

  • OpenSSL 1.1.0e 2017 年 2 月 16 日
  • g++ (GCC) 4.8.5 20150623

谢谢,

推荐答案

支持 OpenSSL 1.1 是在 MariaDB 10.2.6 中添加,截至今天(2017 年 5 月 17 日)尚未发布,但预计很快就会发布.

Support for OpenSSL 1.1 was added in MariaDB 10.2.6, which as of today (May 17, 2017) has not been released yet, but is expected to be very soon.

由于您从 github 获取源代码,您现在可以尝试,但您不应该使用 bb-10.2-mariarocks 树——虽然它可能有一些最新的实验性更改RocksDB(或不是),它很可能以任何其他方式过时.请改用 10.2 分支,它也有 RocksDB.

Since you are taking source code from github, you can try it now already, but you shouldn't be using bb-10.2-mariarocks tree -- while it might have some newest experimental changes in RocksDB (or not), it is likely to be outdated in any other way. Please use 10.2 branch instead, it has RocksDB as well.

这篇关于错误“MD5_CONTEXT 类型不完整";使用 MariaDB 10.2 和 Openssl 1.1.0e的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆