首先,让我澄清一下这里的一切是MariaDB - 实际上没有涉及MySQL代码。
在Arch Linux中,我正在运行MariaDB服务器和客户端。我安装了mariadb package,它是从源代码构建的:
http://ftp.heanet.ie/mirrors/mariadb/mariadb-10.1.18/source/mariadb-10.1.18.tar.gz
这提供:
我有C ++应用程序将访问MariaDB,我认为我还需要mariadb-connector-c,所以我在
构建了标签v2.3.1https://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);
(注意返回值上缺少的const。)
我在这一点上非常困惑,为什么在每个函数中声明了相同的函数,为什么它们不同,我应该使用它等等。
注意我知道mariadb++,但最后一次提交是在3。5年前,所以我假装它不存在。
答案 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)这是一个小错误,已经修复