gpt4 book ai didi

mysql - 编译MySQL C API客户端未链接libmysqlclient.so.20

转载 作者:行者123 更新时间:2023-11-29 10:31:06 25 4
gpt4 key购买 nike

我正在为 Zabbix 编写一些可加载模块,例如编译共享对象。我编写了一个使用 MySQL C API 从表中读取一些数据的程序,它相当标准,包括:

#include <my_global.h>
#include <mysql.h>

我的 gcc 命令如下所示(为了清楚起见,扩展了 mysql_config):

gcc -fPIC -shared -o zbx_mysql.so zbx_mysql.c -I/usr/lib64/mysql `mysql_config --cflags`  -I/opt/zabbix/3.2/include -L/usr/lib64/mysql -lmysqlclient -lpthread -lm -lrt -ldl

/usr/lib64/mysql 的内容:

-rw-r--r--  1 root root 21358968 Sep 13 17:15 libmysqlclient.a
lrwxrwxrwx 1 root root 20 Nov 19 23:19 libmysqlclient_r.so.18 -> libmysqlclient.so.18
lrwxrwxrwx 1 root root 24 Nov 19 23:19 libmysqlclient_r.so.18.1.0 -> libmysqlclient.so.18.1.0
lrwxrwxrwx 1 root root 20 Nov 19 23:19 libmysqlclient.so -> libmysqlclient.so.20
lrwxrwxrwx 1 root root 24 Nov 19 23:19 libmysqlclient.so.18 -> libmysqlclient.so.18.1.0
-rwxr-xr-x 1 root root 9580608 Sep 13 17:07 libmysqlclient.so.18.1.0
lrwxrwxrwx 1 root root 24 Nov 19 23:18 libmysqlclient.so.20 -> libmysqlclient.so.20.3.7
-rwxr-xr-x 1 root root 9884704 Sep 13 17:15 libmysqlclient.so.20.3.7
-rw-r--r-- 1 root root 44102 Sep 13 17:13 libmysqlservices.a
drwxr-xr-x 4 root root 28 Nov 19 23:18 mecab
drwxr-xr-x. 3 root root 4096 Nov 19 23:19 plugin

.so 在开发盒上编译并运行良好,但将其复制到未安装 mysql-devel 的盒子会产生以下错误:

cannot load module "zbx_mysql.so": libmysqlclient.so.20: cannot open shared object file: No such file or directory

我只能假设这意味着 libmysqlclient.so.20.so 没有捆绑到我的 .so 中。我在这里几乎是个新手,所以如果有人可以提供建议,我将不胜感激。

最佳答案

共享库不是“捆绑”的,这就是它们被共享的原因。您尝试运行的机器显然缺少该库。库通常不在“-dev”或“-devel”包中。

在典型的 *nix 系统上,您可以安装同一共享库的多个版本,但通常只有一个开发包。如果您安装了 mysql-client 20 的开发包,编译后的代码将链接到该版本。如果您希望编译的代码链接到 mysql-client 18,请安装旧版本的开发包。

如果您需要独立于目标系统上安装的库,一种可能是链接静态库。

关于mysql - 编译MySQL C API客户端未链接libmysqlclient.so.20,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47395975/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com