首页 > 系统相关 >Linux程序找不到共享库 .so 文件

Linux程序找不到共享库 .so 文件

时间:2024-10-18 18:22:13浏览次数:1  
标签:文件 so conf Linux 共享 加载

运行 Linux 程序的时候提示找不到共享库错误: error while loading shared libraries: libLinuxCpp_02_Lib.so: cannot open shared object file: No such file or directory。

Linux程序在加载 so 库文件时,搜索顺序依次如下所示。如果所有的位置都找不到,就会爆以上的错误信息,提示找不到共享库。因此优先级也是从上到下依次降低,即如果多个地方都进行了不同的设置,则会按照优先级高的设置进行搜索

  1. rpath 信息,编译链接时写入到可执行文件内部的数据
  2. LD_LIBRARY_PATH 环境变量
  3. runpath 信息,编译链接时写入到可执行文件内部的数据
  4. /etc/ld.so.conf 文件中列出的路径
  5. /lib、/usr/lib 等系统默认路径

对于运行时找不到共享库,常用的有三种方式:

  • 编辑自己的 .conf文件
  • 添加临时环境变量 LD_LIBRARY_PATH
  • 将.so 文件拷贝到系统默认加载共享库的路径:/lib/usr/lib

一、添加编辑自定义 .conf 文件

该方式为发布程序时,加载附加 .so文件的常用方法,可以避免修改系统自带的 .conf 文件,也是较为推荐的方法。

1、创建自定义 .conf 文件
# 进入到 /etc/ld.so.conf.d 目录下
cd /etc/ld.so.conf.d/

# 创建 xxx.conf 文件,文件名称自定,文件类型必须为 .conf
sudo vim libCustom.conf
2、将依赖.so文件路径添加进来

在新建的 libCustom.conf 文件中,添加所依赖的 .so 文件的路径,以告诉系统在哪里去找对应的共享库。然后保存并退出。

/home/projects/LinuxCpp_02_Lib/bin/x64/Debug/

3、更新动态链接库缓存

sudo ldconfig 执行更新动态链接库缓存的命令,以保证新增加的共享库能够被系统识别。然后执行可执行程序将不会提示找不到共享库的错误。



【参考资料】
【linux】程序找不到动态库.so的解决办法|查看.so动态库信息|.so动态库加载顺序
一文读懂Linux下动态链接库版本管理及查找加载方式

标签:文件,so,conf,Linux,共享,加载
From: https://www.cnblogs.com/Jeffxu/p/18474839

相关文章

  • Linux 常用指令全解析
    文章目录一、文件和目录操作指令1.`ls`2.`cd`3.`pwd`4.`mkdir`5.`rm`二、文件查看和编辑指令1.`cat`2.`more`和`less`3.`vi`或`vim`三、文件复制和移动指令1.`cp`2.`mv`四、系统管理指令1.`ps`2.`top`3.`kill`五、网络相关指令1.`ping`2.`ifconfig`或......
  • TCP-UDP-Socket调试工具以及使用教程(亲测好用!)
    前言TCP-UDP老程序都不陌生吧,面试常问。所以在网络编程与网络应用开发的过程中,调试是一个至关重要的环节,它帮助开发者确保数据能够准确无误地在不同节点之间传输。尤其当涉及到TCP/IP、UDP等底层网络通信协议时,面对复杂的连接建立、数据流控制及错误处理等问题,拥有一款强大且专业......
  • Steam家庭共享为何总是自动失效?Steam家庭共享失效之谜原因、排查与修复全攻略
    Steam家庭共享功能作为Steam平台的一大特色,允许家庭成员或朋友在同一家庭网络下共享游戏库,享受更多元化的游戏体验。然而,许多用户在使用该功能时常常遇到自动失效的问题,这不仅影响了游戏体验,还可能带来不必要的困扰。本文将从原因、排查与修复三个方面,为你提供一份全面的Steam......
  • 使用Python和BeautifulSoup进行网页爬虫与数据采集
    目录一、什么是网页爬虫?1.1网页爬虫的应用场景二、爬虫的基本流程三、准备工作四、实战:抓取豆瓣电影Top2504.1发送请求4.2解析页面4.3数据存储五、应对反爬虫技术5.1使用代理5.2模拟浏览器行为六、爬虫的扩展与优化6.1处理分页6.2多线程爬取6.3动态......
  • 对Linux社区”失望“
    谈到Unix或Linux时,许多人往往陷入一种浪漫主义的情怀,仿佛掌握了Unix命令行就等同于获得了掌控一切的自由。的确,Unix的设计初衷是简单、模块化,鼓励用户自己去掌控系统。然而,随着时间的推移,我们必须面对一个现实:自由并不等同于效率,也不等同于现代化。《Unix-HatersHa......
  • SpringBoot+Vue+Uniapp私家车位共享小程序系统(源码+lw+部署文档+讲解等)
    项目运行截图技术框架后端采用SpringBoot框架SpringBoot是一个用于快速开发基于Spring框架的应用程序的开源框架。它采用约定大于配置的理念,提供了一套默认的配置,让开发者可以更专注于业务逻辑而不是配置文件。SpringBoot通过自动化配置和约定大于配置的......
  • ARM架构鲲鹏主机BClinux离线安装docker步骤
    ■下载arm架构二进制文件安装包http://mirrors.163.com/docker-ce/linux/static/stable/aarch64/docker-27.3.1.tgz21-Sep-202401:3666M■解压二进制文件移动到/usr/bin目录tarxvfzdocker-27.3.1.tgzls-ldockercpdocker/......
  • 【sop】基于灵敏度分析的有源配电网智能软开关优化配置[升级1](Matlab代码实现)
    ......
  • 【Kernel】基于 QEMU 的 Linux 内核编译和安装
    目录安装虚拟机系统共享目录编译内核卸载内核参考资料本文主要记录个人做存储系统研究时,在QEMU环境下编译和安装Linux内核的过程安装虚拟机系统之前在利用RocksDB+ZenFS测试ZNS的环境搭建和使用给出过借助VNC进行图形化安装的步骤,这里再给出仅通过终端进行安装的......
  • VK1640B SSOP24工作电压3.0-5.5V/内置上电复位电路/数码管驱动电路/LED显示驱动芯片
    VK1640B是一种数码管或点阵LED驱动控制专用芯片,内部集成有数据锁存器、LED驱动等电路。SEG脚接LED阳极,GRID脚接LED阴极,可支持8SEGx12GRID的LED显示屏。适用于小型LED显示屏驱动。采用SSOP24的封装形式。LJQ2913产品品牌:永嘉微电/VINKA产品型号:VK1640B封装形式:SSOP24特......