/usr/bin/ld: cannot find -l<nameOfTheLibrary>

在编译程序报了如下错误:/usr/bin/ld: cannot find -lmtcr_ul: No such file or directory

他的命名规则时"l+nameOfTheLibrary",所以我缺少一个mtcr_ul相关的库

问题原因

根本原因:还是某一个lib库文件不存在,你可以通过ld查看他需要什么库文件:

/usr/bin/ld -lmtcr_ul --verbose

bash 复制代码
==================================================
ld: mode aarch64linux
attempt to open /usr/local/lib/aarch64-linux-gnu/libmtcr_ul.so failed
attempt to open /usr/local/lib/aarch64-linux-gnu/libmtcr_ul.a failed
attempt to open /lib/aarch64-linux-gnu/libmtcr_ul.so failed
attempt to open /lib/aarch64-linux-gnu/libmtcr_ul.a failed
attempt to open /usr/lib/aarch64-linux-gnu/libmtcr_ul.so failed
attempt to open /usr/lib/aarch64-linux-gnu/libmtcr_ul.a failed
attempt to open /usr/local/lib/libmtcr_ul.so failed
attempt to open /usr/local/lib/libmtcr_ul.a failed
attempt to open /lib/libmtcr_ul.so failed
attempt to open /lib/libmtcr_ul.a failed
attempt to open /usr/lib/libmtcr_ul.so failed
attempt to open /usr/lib/libmtcr_ul.a failed
attempt to open /usr/aarch64-linux-gnu/lib/libmtcr_ul.so failed
attempt to open /usr/aarch64-linux-gnu/lib/libmtcr_ul.a failed
ld: cannot find -lmtcr_ul: No such file or directory
attempt to open /usr/local/lib/aarch64-linux-gnu/libmtcr_ul.so failed
attempt to open /usr/local/lib/aarch64-linux-gnu/mtcr_ul.a failed
attempt to open /lib/aarch64-linux-gnu/libmtcr_ul.so failed
attempt to open /lib/aarch64-linux-gnu/mtcr_ul.a failed
attempt to open /usr/lib/aarch64-linux-gnu/libmtcr_ul.so failed
attempt to open /usr/lib/aarch64-linux-gnu/mtcr_ul.a failed
attempt to open /usr/local/lib/libmtcr_ul.so failed
attempt to open /usr/local/lib/mtcr_ul.a failed
attempt to open /lib/libmtcr_ul.so failed
attempt to open /lib/mtcr_ul.a failed
attempt to open /usr/lib/libmtcr_ul.so failed
attempt to open /usr/lib/mtcr_ul.a failed
attempt to open /usr/aarch64-linux-gnu/lib/libmtcr_ul.so failed
attempt to open /usr/aarch64-linux-gnu/lib/mtcr_ul.a failed

这些lib库文件只要有一个就行,或者你有其他版本的库 可以做一下软链接

解决办法

解1

解决办法的话,找一个有这个库文件的机器,拷贝一份文件过来:比如在另外一台机器上

bash 复制代码
==================================================
ld: mode aarch64linux
attempt to open /usr/local/lib/aarch64-linux-gnu/libmtcr_ul.so failed
attempt to open /usr/local/lib/aarch64-linux-gnu/libmtcr_ul.a failed
attempt to open /lib/aarch64-linux-gnu/libmtcr_ul.so failed
attempt to open /lib/aarch64-linux-gnu/libmtcr_ul.a failed
attempt to open /usr/lib/aarch64-linux-gnu/libmtcr_ul.so failed
attempt to open /usr/lib/aarch64-linux-gnu/libmtcr_ul.a failed
attempt to open /usr/local/lib/libmtcr_ul.so failed
attempt to open /usr/local/lib/libmtcr_ul.a failed
attempt to open /lib/libmtcr_ul.so failed
attempt to open /lib/libmtcr_ul.a succeeded
/lib/libmtcr_ul.a

把/lib/libmtcr_ul.a拷贝到缺失的这个文件夹下就行

解2

找到这个库文件所属于哪个软件包

bash 复制代码
dpkg -S /lib/libmtcr_ul.a

或者直接google,找到后,直接apt install就好

但是有很多都找不到捂脸哭

解3

如果本机有相关软件包的话,可以做一下软链接

综上 第一个种方法最靠谱,但是得找一台有该软件包的环境。。。。。。

参考:

https://stackoverflow.com/questions/16710047/usr-bin-ld-cannot-find-lnameofthelibrary

相关推荐
AlfredZhao2 小时前
生产环境里,为什么不建议把普通端口直接暴露到公网?
linux·https·443·80
戴为沐1 天前
Linux内存扩容指南
linux
zylyehuo2 天前
Linux 彻底且安全地删除文件
linux
用户805533698032 天前
主线 U-Boot 上 RK3506:和闭源 rkbin 拔河的三个隐性契约
linux·嵌入式
用户034095297912 天前
linux fcitx 5 雾凇拼音 设置在中文输入法下仍然输入英文标点
linux
Web3探索者4 天前
可视化服务器管理和传统命令行区别是什么?新手教程:Linux 运维到底该用图形界面还是 SSH 命令行?
linux·ssh
zylyehuo4 天前
Linux系统中网线与USB网络共享冲突
linux
Sokach10155 天前
Linux Shell 脚本从零到能用:一个新手的一天学习总结
linux
AlfredZhao6 天前
Docker 容器时区不对,`timedatectl` 不存在怎么办?
linux·timezone
zzzzzz3107 天前
9K Star 炸裂开源!这个 C 语言写的代码知识图谱,把 Linux 内核索引压缩到了 3 分钟
linux·服务器·sql