/usr/bin/ld: warning: **libmysqlclient.so.20**, needed by //usr/lib/libgdal.so.20, not found (try u

2023-10-16 05:10

本文主要是介绍/usr/bin/ld: warning: **libmysqlclient.so.20**, needed by //usr/lib/libgdal.so.20, not found (try u,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

报错信息

/usr/bin/ld: warning: libmysqlclient.so.20, needed by //usr/lib/libgdal.so.20, not found (try using -rpath or -rpath-link)
//usr/lib/libgdal.so.20:对‘mysql_store_result@libmysqlclient_20.0’未定义的引用
//usr/lib/libgdal.so.20:对‘mysql_affected_rows@libmysqlclient_20.0’未定义的引用
//usr/lib/libgdal.so.20:对‘mysql_insert_id@libmysqlclient_20.0’未定义的引用
//usr/lib/libgdal.so.20:对‘mysql_server_init@libmysqlclient_20.0’未定义的引用
//usr/lib/libgdal.so.20:对‘mysql_free_result@libmysqlclient_20.0’未定义的引用
//usr/lib/libgdal.so.20:对‘mysql_num_fields@libmysqlclient_20.0’未定义的引用
//usr/lib/libgdal.so.20:对‘mysql_field_count@libmysqlclient_20.0’未定义的引用
//usr/lib/libgdal.so.20:对‘mysql_real_connect@libmysqlclient_20.0’未定义的引用
//usr/lib/libgdal.so.20:对‘mysql_server_end@libmysqlclient_20.0’未定义的引用
//usr/lib/libgdal.so.20:对‘mysql_errno@libmysqlclient_20.0’未定义的引用
//usr/lib/libgdal.so.20:对‘mysql_use_result@libmysqlclient_20.0’未定义的引用
//usr/lib/libgdal.so.20:对‘mysql_fetch_lengths@libmysqlclient_20.0’未定义的引用
//usr/lib/libgdal.so.20:对‘mysql_close@libmysqlclient_20.0’未定义的引用
//usr/lib/libgdal.so.20:对‘mysql_options@libmysqlclient_20.0’未定义的引用
//usr/lib/libgdal.so.20:对‘mysql_init@libmysqlclient_20.0’未定义的引用
//usr/lib/libgdal.so.20:对‘mysql_field_seek@libmysqlclient_20.0’未定义的引用
//usr/lib/libgdal.so.20:对‘mysql_query@libmysqlclient_20.0’未定义的引用
//usr/lib/libgdal.so.20:对‘mysql_fetch_field@libmysqlclient_20.0’未定义的引用
//usr/lib/libgdal.so.20:对‘mysql_error@libmysqlclient_20.0’未定义的引用
//usr/lib/libgdal.so.20:对‘mysql_num_rows@libmysqlclient_20.0’未定义的引用
//usr/lib/libgdal.so.20:对‘mysql_fetch_row@libmysqlclient_20.0’未定义的引用
collect2: error: ld returned 1 exit status
line_det/CMakeFiles/line.dir/build.make:167: recipe for target ‘/home/dzh/Demo/line_det/devel/lib/line_det/line’ failed
make[2]: *** [/home/dzh/Demo/line_det/devel/lib/line_det/line] Error 1
CMakeFiles/Makefile2:455: recipe for target ‘line_det/CMakeFiles/line.dir/all’ failed
make[1]: *** [line_det/CMakeFiles/line.dir/all] Error 2
Makefile:140: recipe for target ‘all’ failed
make: *** [all] Error 2
Invoking “make -j12 -l12” failed
终端进程“bash ‘-c’, ‘catkin_make’”已终止,退出代码: 1。

解决方法
经过了一下午3h的摸索,终于解决了以上问题,总结一下让后面的同学少走弯路吧。
报错原因是因为系统找不到libmysqlclient.so.20这个库。

1、那么我们先在Ubuntu系统中查找一下本地是否有这个文件。
输入find / -name libmysqlclient.so.20。如果有的话会在/usr/local/mysql/lib/中或者/usr/lib/mysql/plugin中,根据自己安装mysql时的路径来看。

在这里插入图片描述

2、如果有该文件,直接第3步。没有这个库的话,打开下面的百度网盘链接,然后下载到本地。切换到下载到的目录,然后输入sudo mv libmysqlclient.so.20 /usr/lib/mysql/plugin将库文件移动到mysql/plugin中。

在这里插入图片描述
3、现在我们有了这个库文件,我们需要将它设置一个软链接指向系统需要的文件名libmysqlclient.so.20。这样,只要系统想访问libmysqlclient.so.20,就会调用到这个库文件。大家可以把软连接当成是文件的引用,具体的解释在文末。

输入命令:sudo ln -s /usr/lib/mysql/plugin/libmysqlclient.so.20 /usr/lib/libmysqlclient.so.20回车输入管理员密码,然后创建成功。如果输错了想删除软链接,输入rm -rf /usr/lib/libmysqlclient.so.20即可删除,也就是rm -rf 链接路径名

在这里插入图片描述
4、我们再次编译项目,如果是在VsCode中哦,直接Ctrl+Shift+B,编译成功。

在这里插入图片描述

在Linux系统中,内核为每一个新创建的文件分配一个inode(索引结点),每个文件都有一个唯一的inode号。文件属性保存在索引结点里,在访问文件时,索引结点被复制到内存中,从而实现对文件的快速访问。
链接是一种在共享文件和访问它的用户的若干目录项之间建立联系的一种方法。Linux中包括两种链接:硬链接(Hard Link)和软链接(Soft Link),软链接又称为符号链接(Symbolic link),相当于Windows下的快捷方式。

这篇关于/usr/bin/ld: warning: **libmysqlclient.so.20**, needed by //usr/lib/libgdal.so.20, not found (try u的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/219241

相关文章

springboot将lib和jar分离的操作方法

《springboot将lib和jar分离的操作方法》本文介绍了如何通过优化pom.xml配置来减小SpringBoot项目的jar包大小,主要通过使用spring-boot-maven-plugin... 遇到一个问题,就是每次maven package或者maven install后target中的ja

配置springboot项目动静分离打包分离lib方式

《配置springboot项目动静分离打包分离lib方式》本文介绍了如何将SpringBoot工程中的静态资源和配置文件分离出来,以减少jar包大小,方便修改配置文件,通过在jar包同级目录创建co... 目录前言1、分离配置文件原理2、pom文件配置3、使用package命令打包4、总结前言默认情况下,

Anaconda 中遇到CondaHTTPError: HTTP 404 NOT FOUND for url的问题及解决办法

最近在跑一个开源项目遇到了以下问题,查了很多资料都大(抄)同(来)小(抄)异(去)的,解决不了根本问题,费了很大的劲终于得以解决,记录如下: 1、问题及过程: (myenv) D:\Workspace\python\XXXXX>conda install python=3.6.13 Solving environment: done.....Proceed ([y]/n)? yDownloa

jenkins 插件执行shell命令时,提示“Command not found”处理方法

首先提示找不到“Command not found,可能我们第一反应是查看目标机器是否已支持该命令,不过如果相信能找到这里来的朋友估计遇到的跟我一样,其实目标机器是没有问题的通过一些远程工具执行shell命令是可以执行。奇怪的就是通过jenkinsSSH插件无法执行,经一番折腾各种搜索发现是jenkins没有加载/etc/profile导致。 【解决办法】: 需要在jenkins调用shell脚

PHP7扩展开发之函数方式使用lib库

前言 首先说下什么是lib库。lib库就是一个提供特定功能的一个文件。可以把它看成是PHP的一个文件,这个文件提供一些函数方法。只是这个lib库是用c或者c++写的。 使用lib库的场景。一些软件已经提供了lib库,我们就没必要再重复实现一次。如,原先的mysql扩展,就是使用mysql官方的lib库进行的封装。 在本文,我们将建立一个简单的lib库,并在扩展中进行封装调用。 代码 基础

PHP7扩展开发之对象方式使用lib库

前言 上一篇文章,我们使用的是函数方式调用lib库。这篇文章我们将使用对象的方式调用lib库。调用代码如下: <?php $hello = new hello(); $result = $hello->get(); var_dump($result); ?> 我们将在扩展中实现hello类。hello类中将依赖lib库。 代码 基础代码 这个扩展,我们将在say扩展上增加相关代码。sa

C++第四十七弹---深入理解异常机制:try, catch, throw全面解析

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C++详解】 目录 1.C语言传统的处理错误的方式 2.C++异常概念 3. 异常的使用 3.1 异常的抛出和捕获 3.2 异常的重新抛出 3.3 异常安全 3.4 异常规范 4.自定义异常体系 5.C++标准库的异常体系 1.C语言传统的处理错误的方式 传统的错误处理机制:

什么是Lib

概念 LIB有两种: 一种是静态库,比如C-Runtime库,这种LIB中有函数的实现代码,一般用在静态连编上,它是将LIB中的代码加入目标模块(EXE或者DLL)文件中,所以链接好了之后,LIB文件就没有用了。一种LIB是和DLL配合使用的,里面没有代码,代码在DLL中,这种LIB是用在静态调用DLL上的,所以起的作用也是链接作用,链接完成了,LIB也没用了。至于动态调用DLL的话,根本用不

QT 编译报错:C3861: ‘tr‘ identifier not found

问题: QT 编译报错:C3861: ‘tr’ identifier not found 原因 使用tr的地方所在的类没有继承自 QObject 类 或者在不在某一类中, 解决方案 就直接用类名引用 :QObject::tr( )

Java构造和解析Json数据的两种方法(json-lib构造和解析Json数据, org.json构造和解析Json数据)

在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别。下面首先介绍用json-lib构造和解析Json数据的方法示例。 一、介绍       JSON-lib包是一个beans,collections,maps,java arrays 和XML和JSON互相转换的包,主要就是用来解析Json