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