报错:/usr/bin/ld: 找不到 -lclntsh: 没有那个文件或目录

环境:ubuntu 22.04   使用docker安装的oracle

操作:在使用gcc编译器时,链接动态库 -locci -lclntsh,设置环境变量不行之后,又加了(-L库文件路径),变成-locci可以,但是-lclntsh不行,报错如标题所示

(备注:如果你是两个文件都找不到的话,看看是不是root权限问题,因为docker的路径是默认root的;再或者你的   -L库文件路径     不正确)

解决问题:

1、查看文件详细信息

locate libclntsh.so

        输出情况:

root@mrluo-virtual-machine:/home/mrluo# locate libclntsh.so
/var/lib/docker/overlay2/7d5a179cbd6d8abc77bc0d51040714ed6045d33851698f9c7c5779b46c93b478/merged/home/oracle/app/oracle/product/11.2.0/dbhome_2/inventory/Scripts/ext/lib/libclntsh.so.11.1
/var/lib/docker/overlay2/7d5a179cbd6d8abc77bc0d51040714ed6045d33851698f9c7c5779b46c93b478/merged/home/oracle/app/oracle/product/11.2.0/dbhome_2/inventory/backup/2014-08-23_05-45-12AM/Scripts/ext/lib/libclntsh.so.11.1
/var/lib/docker/overlay2/7d5a179cbd6d8abc77bc0d51040714ed6045d33851698f9c7c5779b46c93b478/merged/home/oracle/app/oracle/product/11.2.0/dbhome_2/lib/libclntsh.so
/var/lib/docker/overlay2/7d5a179cbd6d8abc77bc0d51040714ed6045d33851698f9c7c5779b46c93b478/merged/home/oracle/app/oracle/product/11.2.0/dbhome_2/lib/libclntsh.so.10.1
/var/lib/docker/overlay2/7d5a179cbd6d8abc77bc0d51040714ed6045d33851698f9c7c5779b46c93b478/merged/home/oracle/app/oracle/product/11.2.0/dbhome_2/lib/libclntsh.so.11.1
/var/lib/docker/overlay2/b105bb6cc6d953181ba0381d099635f99ec9dbe76c70637f10f350256ed0a599/diff/home/oracle/app/oracle/product/11.2.0/dbhome_2/inventory/Scripts/ext/lib/libclntsh.so.11.1
/var/lib/docker/overlay2/b105bb6cc6d953181ba0381d099635f99ec9dbe76c70637f10f350256ed0a599/diff/home/oracle/app/oracle/product/11.2.0/dbhome_2/inventory/backup/2014-08-23_05-45-12AM/Scripts/ext/lib/libclntsh.so.11.1
/var/lib/docker/overlay2/b105bb6cc6d953181ba0381d099635f99ec9dbe76c70637f10f350256ed0a599/diff/home/oracle/app/oracle/product/11.2.0/dbhome_2/lib/libclntsh.so
/var/lib/docker/overlay2/b105bb6cc6d953181ba0381d099635f99ec9dbe76c70637f10f350256ed0a599/diff/home/oracle/app/oracle/product/11.2.0/dbhome_2/lib/libclntsh.so.10.1
/var/lib/docker/overlay2/b105bb6cc6d953181ba0381d099635f99ec9dbe76c70637f10f350256ed0a599/diff/home/oracle/app/oracle/product/11.2.0/dbhome_2/lib/libclntsh.so.11.1

2、进入到相应文件里面

cd /var/lib/docker/overlay2/b105bb6cc6d953181ba0381d099635f99ec9dbe76c70637f10f350256ed0a599/diff/home/oracle/app/oracle/product/11.2.0/dbhome_2/lib

3、查看libclntsh的详细信息

root@mrluo-virtual-machine:/var/lib/docker/overlay2/b105bb6cc6d953181ba0381d099635f99ec9dbe76c70637f10f350256ed0a599/diff/home/oracle/app/oracle/product/11.2.0/dbhome_2/lib# ll | grep libclntsh
lrwxrwxrwx  1 500 500        69  8月 23  2014 libclntsh.so -> /home/oracle/app/oracle/product/11.2.0/dbhome_2/lib/libclntsh.so.11.1
lrwxrwxrwx  1 500 500        64  8月 23  2014 libclntsh.so.10.1 -> /home/oracle/app/oracle/product/11.2.0/dbhome_2/lib/libclntsh.so
-rwxr-xr-x  1 500 500  48725713  8月 23  2014 libclntsh.so.11.1*

这个时候发现问题就在这里,大家可以尝试用1、2、3的步骤看看能通过的-locci就会发现这里的两个软链接都是指向错误的,因为我们用了docker容器安装的oracle,所以路径就在docker里面,而不在默认路径下了

4、更改这里的两个软链接

        先删除rm,后链接ln

rm libclntsh.so
rm libclntsh.so.10.1
ln -s ./libclntsh.so.11.1 ./libclntsh.so
ln -s ./libclntsh.so.11.1 ./libclntsh.so.10.1

大功告成!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小新阿呆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值