我正在尝试编译一个C ++程序,其中一个类使用。 g ++无法找到库是我的猜测。我用来编译的命令是 -
g++ c1.cpp c2.cpp c3.cpp c4.cpp -o c4 -lm -lmysqlclient
c3.cpp是需要mysql.h的文件。这个在我的本地计算机上运行完美,但拒绝在错误的服务器上运行
cannot find -lmysqlclient
我尝试使用find
命令在服务器上找到libmysqlclient.so文件,我不认为它们存在于那里
uname -a
揭示
SunOS opteron 5.10 Generic_139556-08 i86pc i386 i86pc
user@opteron 12:26:02 ~/c++/projname/
我意识到我需要链接一些库,但是在哪里以及如何?
任何帮助将不胜感激。 感谢。
答案 0 :(得分:9)
您认为未安装的库包可以使用sudo apt-get install
安装。但问题是找到apt-get包可以理解的正确名称。那怎么做?!简单
使用命令:sudo apt-cache search <filename>
例如:在这种情况下lmysqlclient
sudo apt-cache search mysqlclient
(记得从实际名称中排除'l',即mysqlclient而不是lmysqlclient)。 这输出:
libmysqlclient-dev - MySQL database development files
上述-libmysqlclient-dev
是apt-get
可以识别并解决我们cannot find lmysqlclient
问题的名称
所以现在从界面输入:sudo apt-get install libmysqlclient-dev
。
完成后,尝试制作所需的文件。
答案 1 :(得分:2)
你有MySQL客户端库吗?你能找到它吗
find / -name "libmysqlclient.so" -type f -print 2>/dev/null
此外,您可以使用链接器上的-R
标志将libmysqlclient硬链接为
g++ -R/usr/local/mysql/lib ....
或者,您可以将LD_LIBRARY_PATH_32
或LD_LIBRARY_PATH_64
导出为
export LD_LIBRARY_PATH_32=$MYSQL_HOME/lib
Urko,
答案 2 :(得分:2)
简化@SriHariY.S的答案 -
尝试使用sudo apt-get install libmysqlclient-dev
安装它。
答案 3 :(得分:0)
在Ubuntu 18上,我使用以下命令查找所需软件包的名称来修复此错误:
apt search lmysqlclient
此后,我安装了缺少的软件包:
sudo apt install libmariadbclient-dev-compat