栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

ln命令之make: *** 没有规则可以创建“/usr/lib/x86

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

ln命令之make: *** 没有规则可以创建“/usr/lib/x86

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文件生成。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/643497.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号