找不到-lmysqlclient

K_U*_*K_U 11 mysql solaris

我正在尝试编译一个C++程序,其中一个类使用.g ++无法找到库是我的猜测.我用来编译的命令是 -

g++ c1.cpp c2.cpp c3.cpp c4.cpp -o c4 -lm -lmysqlclient
Run Code Online (Sandbox Code Playgroud)

c3.cpp是需要mysql.h的文件.这在我的本地机器上完美运行,但拒绝在错误的服务器上运行

cannot find -lmysqlclient
Run Code Online (Sandbox Code Playgroud)

我尝试使用find命令在服务器上找到libmysqlclient.so文件,我不认为它们存在于那里

uname -a
Run Code Online (Sandbox Code Playgroud)

揭示了

SunOS opteron 5.10 Generic_139556-08 i86pc i386 i86pc
user@opteron 12:26:02 ~/c++/projname/
Run Code Online (Sandbox Code Playgroud)

我意识到我需要链接一些库,但在哪里以及如何?

任何帮助,将不胜感激.谢谢.

小智 10

无论您认为未安装的库包都可以使用sudo apt-get install.但问题是找到apt-get包可以理解的正确名称.那怎么做?!简单

使用命令: sudo apt-cache search <filename>

例如:在这种情况下 lmysqlclient

sudo apt-cache search mysqlclient
Run Code Online (Sandbox Code Playgroud)

(记得从实际名称中排除'l',即mysqlclient而不是lmysqlclient).这输出:

libmysqlclient-dev - MySQL database development files
Run Code Online (Sandbox Code Playgroud)

在上面-libmysqlclient-devapt-get可以识别和解决我们的cannot find lmysqlclient问题的名称

所以现在输入:sudo apt-get install libmysqlclient-dev来自界面.完成后,尝试制作所需的文件.


小智 3

你们有 MySQL 客户端库吗?你能找到它吗

find / -name "libmysqlclient.so" -type f -print 2>/dev/null
Run Code Online (Sandbox Code Playgroud)

另外,您可以使用-R链接器上的标志将 libmysqlclient 硬链接为

g++ -R/usr/local/mysql/lib ....
Run Code Online (Sandbox Code Playgroud)

或者,您可以将LD_LIBRARY_PATH_32或导出LD_LIBRARY_PATH_64

export LD_LIBRARY_PATH_32=$MYSQL_HOME/lib
Run Code Online (Sandbox Code Playgroud)

乌尔科,