MariaDB(/usr/include/mysql和libmysqlclient)vs(/usr/include/MariaDB libmariadbclient和libmariadb)

MariaDB(/usr/include/mysql和libmysqlclient)vs(/usr/include/MariaDB libmariadbclient和libmariadb),mariadb,Mariadb,首先,让我澄清一下这里的一切都是MariaDB——实际上没有涉及到MySQL代码 在ArchLinux中,我运行的是MariaDB服务器和客户端。我在以下位置安装了从源代码构建的: 这规定: /usr/include/mysql/*(141.h文件) /usr/lib/libmysqlclient.so /usr/lib/libmysqld.so(我知道这是为了在我不需要的应用程序中嵌入一个MariaDB服务器,所以我将在剩下的消息中忽略它。) < >我有C++应用程序,可以访问Maria

首先,让我澄清一下这里的一切都是MariaDB——实际上没有涉及到MySQL代码

在ArchLinux中,我运行的是MariaDB服务器和客户端。我在以下位置安装了从源代码构建的:

这规定:

  • /usr/include/mysql/*(141.h文件)
  • /usr/lib/libmysqlclient.so
  • /usr/lib/libmysqld.so(我知道这是为了在我不需要的应用程序中嵌入一个MariaDB服务器,所以我将在剩下的消息中忽略它。)
< >我有C++应用程序,可以访问MariaDB,我认为我也需要,所以我在

上建立了标记v2.3.1。

这规定:

  • /usr/include/mariadb/*(40.h文件)
  • /usr/lib/mariadb/libmariadbclient.a
  • /usr/lib/mariadb/libmariadb.so
Q1-

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

问题2-

/usr/include/mysql/mysql.h(from)

/usr/include/mariadb/mysql.h(来自标签v2.3.1的from)

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

我遇到了
/usr/include/mysql/mysql.h
定义:

const char * STDCALL mysql_error(MYSQL * myql);
char * STDCALL mysql_error(MYSQL *mysql);
但是
/usr/include/mariadb/mysql.h
定义:

const char * STDCALL mysql_error(MYSQL * myql);
char * STDCALL mysql_error(MYSQL *mysql);
(注意返回值上缺少常量。)

在这一点上,我感到非常困惑,为什么在每个函数中声明相同的函数,为什么它们不同,我应该使用什么,等等

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

1)libmysql和libmariadb(Connector/C)之间的主要区别是许可证:libmysql是根据GPL许可证进行许可的,而Connector/C是根据限制较少的LGPL许可证进行许可的,这将允许使用它的封闭源代码应用程序

MariaDB Connector/C 2.3(libmariadb=支持libmysql中的所有api调用和公共结构。3.0版(当前)beta版提供了许多libmysql中未实现的新功能

MariaDB服务器版本10.2(beta版)Connector/C3.0的开始将取代服务器包中的libmysql

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