MariaDB(/usr/include/mysql 和 libmysqlclient)与(/usr/include/mariadb libmariadbclient 和 libmariadb)

MariaDB (/usr/include/mysql and libmysqlclient) vs (/usr/include/mariadb libmariadbclient and libmariadb)

首先,让我澄清一下这里的所有内容都是 MariaDB - 实际上没有涉及 MySQL 代码。

在 Arch Linux 中,我是 运行 MariaDB 服务器和客户端。我安装了从源代码构建的 mariadb package

http://ftp.heanet.ie/mirrors/mariadb/mariadb-10.1.18/source/mariadb-10.1.18.tar.gz

这提供:

我有可以访问 MariaDB 的 C++ 应用程序,我想我也需要 mariadb-connector-c,所以我在

构建了标签 v2.3.1

https://github.com/MariaDB/mariadb-connector-c

这提供:

Q1 -

libmysqlclient、libmariadbclient、libmariadb的作用和区别是什么? (忽略共享库与静态库的区别。)

Q2-

/usr/include/mysql/mysql.h(来自http://ftp.heanet.ie/mirrors/mariadb/mariadb-10.1.18/source/mariadb-10.1.18.tar.gz

/usr/include/mariadb/mysql.h(来自 https://github.com/MariaDB/mariadb-connector-c 的标签 v2.3.1)

非常相似,有很多相同的代码,但也有很大不同。

我运行进入那个/usr/include/mysql/mysql.h定义:

const char * STDCALL mysql_error(MYSQL * myql);

但是/usr/include/mariadb/mysql.h定义:

char * STDCALL mysql_error(MYSQL *mysql);

(注意 return 值中缺少的常量。)

此时我感到非常困惑,为什么每个函数都声明了相同的函数,为什么它们不同,我应该使用哪个等等。

注意我知道 mariadb++,但它的最后一次提交是 3.5 年前,所以我假装它不存在。

1) libmysql 和 libmariadb (Connector/C) 之间的主要区别是许可:libmysql 是在 GPL 许可下许可的,而 Connector/C 是在限制较少的 LGPL 许可下许可的,这将允许使用它关闭源应用程序。

MariaDB Connector/C 2.3(libmariadb= 支持来自 libmysql 的所有 api 调用和 public 结构。版本 3.0(当前)测试版提供了许多未实现的新功能在 libmysql 中。

MariaDB 服务器版本 10.2(测试版)开始 Connector/C3.0 将替换服务器包中的 libmysql。

2) 这是一个小错误,已经修复