编译报错/usr/bin/ld: cannot find -lmysqlclient的问题求助
解决/usr/bin/ld: cannot find -lmysqlclient的问题
原因分析
链接器默认只会搜索指定目录的直接子文件,不会递归查找子目录。你的libmysqlclient.so存放在/usr/lib64/mysql/子目录下,而链接器仅搜索/usr/lib64/根目录,因此无法定位到目标库文件。
可行解决方案
方案1:编译时显式指定库路径
在编译命令中添加-L/usr/lib64/mysql参数,告知链接器去该子目录查找库文件:
g++ -o server main.cpp timer/lst_timer.cpp http/http_conn.cpp log/log.cpp CGImysql/sql_connection_pool.cpp webserver.cpp config.cpp -g -lpthread -L/usr/lib64/mysql -lmysqlclient
方案2:创建软链接到链接器默认搜索目录
将libmysqlclient.so软链接到/usr/lib64/目录下,让链接器能直接检索到:
sudo ln -s /usr/lib64/mysql/libmysqlclient.so /usr/lib64/libmysqlclient.so
执行完成后重新运行编译命令即可。
方案3:更新动态链接器缓存
- 编辑
/etc/ld.so.conf文件,添加一行目录路径:
/usr/lib64/mysql
- 执行命令更新动态链接器缓存:
sudo ldconfig
之后重新编译,链接器会自动识别该目录下的库文件。
内容的提问来源于stack exchange,提问作者wu jiqiang
相关产品推荐
相关产品推荐

