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
这提供:
- /usr/include/mysql/*(141 个.h 文件)
- /usr/lib/libmysqlclient.so
- /usr/lib/libmysqld.so(我看到这是为了将 MariaDB 服务器嵌入到我不需要的应用程序中,所以我将在其余信息中忽略它。)
我有可以访问 MariaDB 的 C++ 应用程序,我想我也需要 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);
(注意 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) 这是一个小错误,已经修复
首先,让我澄清一下这里的所有内容都是 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 服务器嵌入到我不需要的应用程序中,所以我将在其余信息中忽略它。)
我有可以访问 MariaDB 的 C++ 应用程序,我想我也需要 mariadb-connector-c,所以我在
构建了标签 v2.3.1https://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);
(注意 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) 这是一个小错误,已经修复