ln命令之make: *** 没有规则可以创建“/usr/lib/x86_64-linux-gnu/XXXXXX.so”需要的目标“XXX”暴力解法

本文主要是介绍ln命令之make: *** 没有规则可以创建“/usr/lib/x86_64-linux-gnu/XXXXXX.so”需要的目标“XXX”暴力解法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.问题背景

在我们对项目进行编译时,可能会遇到make: *** 没有规则可以创建“/usr/lib/x86_64-linux-gnu/XXXXXX.so”需要的目标,这个问题,导致这个问题的原因大多来源于我们对某个项目的某个依赖库(卸载后)重新进行了源码编译,一般导致两种情况:

    1. 在原本的共享链接库路径下找不到原本的链接库文件.so
    1. 该文件断开链接

2.解决问题

我们进入到目标共享链接库目录下(当前为/usr/lib/x86_64-linux-gnu/),通过ls命令查看:
如图,一种情况为该目录下不存在所需的“xxx.so”文件,另一种情况即该文件存在,但显示为红色,如图中“libopencv_aruco.so”文件,红色即显示该链接为断开状态
在这里插入图片描述

解决步骤一:

通过locate命令查找该.so文件的存储位置

locate 'xxx.so'

如下图,当前寻找的.so文件为“libopencv_aruco.so”文件(即上图中红色链接库文件其一,链接为断开状态),可以看到该文件存在于/usr/local/lib中
在这里插入图片描述
!!:当locate在其他目录(一般为/usr/local/lib)找到.so文件后,不论是两种情况的哪一种(在报错目标目录不存在/存在但链接断开),均可通过一条shell命令进行解决(如上图)
即:

sudo ln -s -f -i /usr/local/lib/xxx.so /报错目录/xxx.so

语法为:

ls -s -f -i 源文件 目标文件

这也是标题的所说的“暴力”,即只要原始共享链接库文件存在,则不分错误情况,一步到位

关于ln命令,-s参数相信大家都比较熟知,即为目标文件创建软链接,而这里又加入的’-f’、’-i’参数才是暴力解决的关键:

-f:强制创建链接,即使目标文件已经存在
–i:交互模式,若目标文件已经存在,则提示用户确认进行覆盖

操作完成后,再次键入ls命令,可以看到该.so文件已经存在且正常,接下来,正常的去对项目进行编译即可。
在这里插入图片描述

解决步骤二:若通过locate命令查找不到源.so文件

1:查看该库是否已经安装/编译
2. 查看版本是否对应

对一第一种情况,如发现该库根本没有安装,找到指定版本安装就好了
对于第二种情况:
比如你的项目需要libopencv-core.so.3.2.0,但你的opencv是其实并不是3.2版本的,这样直接去源码编译opencv3.2就行了,编译过程中就会看到相对应的.so文件生成。

这篇关于ln命令之make: *** 没有规则可以创建“/usr/lib/x86_64-linux-gnu/XXXXXX.so”需要的目标“XXX”暴力解法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

关于数据埋点,你需要了解这些基本知识

产品汪每天都在和数据打交道,你知道数据来自哪里吗? 移动app端内的用户行为数据大多来自埋点,了解一些埋点知识,能和数据分析师、技术侃大山,参与到前期的数据采集,更重要是让最终的埋点数据能为我所用,否则可怜巴巴等上几个月是常有的事。   埋点类型 根据埋点方式,可以区分为: 手动埋点半自动埋点全自动埋点 秉承“任何事物都有两面性”的道理:自动程度高的,能解决通用统计,便于统一化管理,但个性化定

豆包 MarsCode 不允许你还没有女朋友

在这个喧嚣的世界里,爱意需要被温柔地唤醒。为心爱的她制作每日一句小工具,就像是一场永不落幕的浪漫仪式,每天都在她的心田播撒爱的种子,让她的每一天都充满甜蜜与期待。 背景 在这个瞬息万变的时代,我们都在寻找那些能让我们慢下来,感受生活美好的瞬间。为了让这份浪漫持久而深刻,我们决定为女朋友定制一个每日一句小工具。这个工具会在她意想不到的时刻,为她呈现一句充满爱意的话语,让她的每一天都充满惊喜和感动

linux-基础知识3

打包和压缩 zip 安装zip软件包 yum -y install zip unzip 压缩打包命令: zip -q -r -d -u 压缩包文件名 目录和文件名列表 -q:不显示命令执行过程-r:递归处理,打包各级子目录和文件-u:把文件增加/替换到压缩包中-d:从压缩包中删除指定的文件 解压:unzip 压缩包名 打包文件 把压缩包从服务器下载到本地 把压缩包上传到服务器(zip

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

30常用 Maven 命令

Maven 是一个强大的项目管理和构建工具,它广泛用于 Java 项目的依赖管理、构建流程和插件集成。Maven 的命令行工具提供了大量的命令来帮助开发人员管理项目的生命周期、依赖和插件。以下是 常用 Maven 命令的使用场景及其详细解释。 1. mvn clean 使用场景:清理项目的生成目录,通常用于删除项目中自动生成的文件(如 target/ 目录)。共性规律:清理操作

poj 3974 and hdu 3068 最长回文串的O(n)解法(Manacher算法)

求一段字符串中的最长回文串。 因为数据量比较大,用原来的O(n^2)会爆。 小白上的O(n^2)解法代码:TLE啦~ #include<stdio.h>#include<string.h>const int Maxn = 1000000;char s[Maxn];int main(){char e[] = {"END"};while(scanf("%s", s) != EO

在cscode中通过maven创建java项目

在cscode中创建java项目 可以通过博客完成maven的导入 建立maven项目 使用快捷键 Ctrl + Shift + P 建立一个 Maven 项目 1 Ctrl + Shift + P 打开输入框2 输入 "> java create"3 选择 maven4 选择 No Archetype5 输入 域名6 输入项目名称7 建立一个文件目录存放项目,文件名一般为项目名8 确定