gpt4 book ai didi

mysql - 找不到 libmysqlclient.a

转载 作者:可可西里 更新时间:2023-11-01 07:53:02 25 4
gpt4 key购买 nike

在 Amazon EC2 上(uname -r 给出“3.4.37-40.44.amzn1.x86_64”,我听说它基于 Cent OS)我尝试安装:

yum install mysql
yum install mysql-devel

甚至

yum install mysql-libs

(由于 this thread .)

我正在尝试编译一个程序并将 MySQL 库链接到它。这在我的 Mac 上很好,(但 Mac libmysqlclient.a)。 libmysqlclient.a 在这台机器上绝对找不到。它只有 libmysqlclient.so,还有很多版本。

$ sudo find / -name libmysqlclient*

给予

/usr/lib64/mysql/libmysqlclient_r.so
/usr/lib64/mysql/libmysqlclient.so
/usr/lib64/mysql/libmysqlclient.so.18
/usr/lib64/mysql/libmysqlclient.so.18.0.0
/etc/alternatives/libmysqlclient
/etc/alternatives/libmysqlclient_r

ls -l /usr/lib64/mysql

给予

lrwxrwxrwx 1 root root      34 Apr 11 19:21 libmysqlclient_r.so -> /etc/alternatives/libmysqlclient_r
lrwxrwxrwx 1 root root 32 Apr 11 19:21 libmysqlclient.so -> /etc/alternatives/libmysqlclient
lrwxrwxrwx 1 root root 24 Apr 11 18:24 libmysqlclient.so.18 -> libmysqlclient.so.18.0.0
-rwxr-xr-x 1 root root 2983360 Mar 14 10:09 libmysqlclient.so.18.0.0
-rwxr-xr-x 1 root root 11892 Mar 14 09:12 mysqlbug
-rwxr-xr-x 1 root root 7092 Mar 14 10:08 mysql_config

所以唯一真实的文件是libmysqlclient.so.18.0.0

编译命令:

g++ main.cpp -L/usr/lib64/mysql -lmysqlclient.so.18.0.0

失败

/usr/bin/ld: cannot find -lmysqlclient.so.18.0.0
collect2: ld returned 1 exit status

所以有人在撒谎,或者我在 YUM 存储库中完全被骗了,没有像我应该的那样得到我的 libmysqlclient.a

(我避免使用系统上的许多符号链接(symbolic link),这样我就可以消除可能的问题)。

最佳答案

波波波波!你太错了

首先,当你有 .so 文件时,你不需要 libmysqlclient.a 文件。 The .a file is for static linking, .so file for dynamic linking. . .so 文件绝对更好,让你很酷。

当您尝试在没有库链接的情况下进行编译时遇到的问题是

g++ main.cpp

给予

undefined reference to `mysql_init'

但是that can be fixed with

g++ main.cpp `mysql_config --cflags --libs`

关于mysql - 找不到 libmysqlclient.a,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15958612/

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