首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MariaDB (/usr/include/mysql和libmysqlclient) vs (/usr/include/mariadb libmariadbclient和libmariadb)

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

Stack Overflow用户
提问于 2016-10-02 22:28:10
回答 1查看 2.6K关注 0票数 3

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

在Arch中,我运行的是MariaDB服务器和客户机。我安装了mariadb软件包,它是从源代码构建的:

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服务器嵌入到我不需要的应用程序中,所以我将在其余消息中忽略它)。

我有将访问C++的MariaDB应用程序,我认为我也需要mariadb连接器-c,所以我构建了标记v2.3.1

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

这一规定规定:

  • /usr/include/mariadb/* (40个.h文件)
  • /usr/lib/mariadb/libmaradbclient.a
  • /usr/lib/mariadb/libmaradb.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 at )

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

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

代码语言:javascript
复制
const char * STDCALL mysql_error(MYSQL * myql);

但是/usr/include/mariadb/mysql.h定义:

代码语言:javascript
复制
char * STDCALL mysql_error(MYSQL *mysql);

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

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-06 07:55:05

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

MariaDB连接器/C2.3 (libmariadb=支持来自libmysql的所有api调用和公共结构。Version3.0(目前) beta提供了许多没有在libmysql中实现的新功能。

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

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39822379

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档