我正在尝试编译一个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-dev
是apt-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)
乌尔科,