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

时间:2016-10-02 22:28:11

标签: mariadb

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

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

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

这提供:

  • / usr / include / mysql / *(141 .h文件)
  • /usr/lib/libmysqlclient.so
  • /usr/lib/libmysqld.so(我看到这是为了将MariaDB服务器嵌入到我不需要的应用程序中,所以我会在其余的消息中忽略它。)< / LI>

我有C ++应用程序将访问MariaDB,我认为我还需要mariadb-connector-c,所以我在

构建了标签v2.3.1

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

这提供:

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

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);

(注意返回值上缺少的const。)

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

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

1 个答案:

答案 0 :(得分:2)

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

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

MariaDB Server版本10.2(beta)的开始Connector / C 3.0将取代服务器软件包中的libmysql。

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