【Linux】PATH和LD_LIBRARY_PATH的区别

PATH与LD_LIBRARY_PATH的区别

PATHLD_LIBRARY_PATH 是Linux和类Unix操作系统中的两个环境变量,它们在系统中扮演着不同但重要的角色。尽管它们的名称和用途在某种程度上相似,但它们用于指定的路径类型和目的有明显的区别。

PATH

  • 用途PATH 环境变量用于定义系统在响应用户或程序的执行命令时应当搜索可执行文件的目录列表。
  • 工作方式:当你在命令行输入一个命令时,系统会根据 PATH 环境变量中列出的目录顺序来搜索这个命令对应的可执行文件。如果找到了,就执行这个文件。
  • 示例:如果你的 PATH 包含 /usr/bin,当你尝试执行 ls 命令时,系统会在 /usr/bin 目录下搜索名为 ls 的可执行文件。

LD_LIBRARY_PATH

  • 用途LD_LIBRARY_PATH 环境变量用于定义系统在运行可执行文件时,应当搜索动态链接库(.so 文件)的目录列表。
  • 工作方式:当一个程序需要加载动态链接库(即共享对象文件)时,系统会根据 LD_LIBRARY_PATH 环境变量中列出的目录顺序来搜索这些库。如果找到了需要的库,系统就会加载它们,以便程序可以使用库中定义的函数和资源。
  • 示例:如果你的 LD_LIBRARY_PATH 包含 /usr/local/lib,当某个程序尝试加载动态库时,系统会首先在 /usr/local/lib 目录下查找这些库文件。

区别总结

  • 目的PATH 用于查找可执行文件,而 LD_LIBRARY_PATH 用于查找动态链接库。
  • 影响对象PATH 影响命令的查找和执行,LD_LIBRARY_PATH 影响程序运行时动态库的查找和加载。
  • 使用场景PATH 更多地关注于用户和系统的交互,即如何快速找到并执行用户请求的命令;LD_LIBRARY_PATH 更多地关注于程序的运行时环境,即程序运行时如何找到它需要的动态链接库。

了解这两个环境变量的区别对于有效地配置和管理Linux和类Unix操作系统的环境非常重要,可以帮助确保命令和程序能够正确地找到它们需要的资源。

以.so结尾的文件通常是用作什么的?通俗解释?

.so 结尾的文件是在Linux和类Unix操作系统中使用的“共享对象”(Shared Object)文件。可以将它们理解为Windows系统中的 .dll 文件(动态链接库),它们都是一种动态库文件。

共享对象文件的作用

  • 代码重用和模块化:开发者可以将常用的函数和资源打包成共享对象文件,这样不同的程序就可以共享这些代码和资源,而不需要在每个程序中重复编写相同的代码。这样做既节省了磁盘空间,又提高了代码的维护效率。
  • 节省内存:当多个正在运行的程序同时使用同一个共享对象文件时,这个文件只需要在内存中有一份拷贝,所有程序都可以共享这份拷贝。这样可以有效减少程序运行时占用的内存量。
  • 动态链接:共享对象文件在程序运行时被动态地链接到程序中,而不是在程序编译时静态地嵌入。这意味着,如果共享对象文件被更新或替换,使用这个共享对象的程序可以直接利用新版本,而不需要重新编译程序。

使用场景

共享对象文件在许多场景中都非常有用,比如:

  • 操作系统的系统库:操作系统的许多核心功能和API都封装在共享对象文件中,供所有程序使用。
  • 第三方库:很多第三方开发库(如图形处理库、数学计算库等)提供.so文件,以便开发者在自己的程序中使用这些库的功能。
  • 插件和扩展:一些程序支持通过加载.so文件来添加新功能或扩展现有功能,这允许程序在不修改原始代码的情况下增加新的特性。

总结

总的来说,.so文件是Linux和类Unix系统中的动态库文件,它们使得代码重用、内存使用优化和动态链接成为可能,对于构建模块化、高效和易于维护的软件系统至关重要。

什么时候export bin/ export lib

换种说法,什么时候export bin,export lib有什么讲究吗?
PATH :指定可执行文件的搜索路径。

  • 例如,如添加环境变量时
  • export PATH=/opt/conda/bin:$PATH

LD_LIBRARY_PATH: 共享库文件的搜索路径。

  • 例如,export LD_LIBRARY_PATH=/usr/local/cuda-11.2/lib64:$LD_LIBRARY_PATH

在Linux和类Unix系统中,环境变量是用来定义操作系统运行时环境的参数。PATHLD_LIBRARY_PATH是两个常见的环境变量,分别用于指定可执行文件的搜索路径和共享库文件的搜索路径。当你使用export命令来设置这些环境变量时,你是在告诉操作系统在哪里查找它需要的文件。

何时使用export添加到PATH

当你安装了一个程序或脚本,并希望能够从任何地方通过终端直接调用它时,你应该将它的安装目录添加到PATH环境变量中。这样,你就不需要每次都输入完整的路径来运行程序了。

例如,如果你有一个可执行文件在/home/username/bin目录下,你可以这样添加到PATH

export PATH=/home/username/bin:$PATH

这个命令将/home/username/bin目录添加到现有的PATH环境变量之前,确保系统首先在这个目录中查找可执行文件。


何时使用export添加到LD_LIBRARY_PATH

如果你安装了一些程序或库,它们依赖于特定的共享库(.so 文件),而这些共享库不在系统默认的库搜索路径中,你可能需要将这些库的路径添加到LD_LIBRARY_PATH环境变量中。

例如,如果你的程序依赖于一些位于/home/username/lib目录下的共享库,你可以这样设置:

export LD_LIBRARY_PATH=/home/username/lib:$LD_LIBRARY_PATH

这个命令将/home/username/lib添加到现有的LD_LIBRARY_PATH环境变量之前,让系统在启动程序时首先在这个目录中查找所需的共享库。

注意

  • 修改PATHLD_LIBRARY_PATH只对当前会话有效。如果你想要永久修改,你需要将相应的export命令添加到你的shell配置文件中,比如~/.bashrc~/.profile,具体取决于你使用的shell。
  • 频繁修改LD_LIBRARY_PATH可能会导致系统运行不稳定,因为它可能会覆盖系统默认的库搜索路径,导致系统使用错误的版本的共享库。因此,在使用LD_LIBRARY_PATH时要特别小心。
  • 在某些情况下,软件安装程序会自动处理环境变量的设置,你可能不需要手动设置。始终参考软件的安装说明来确定最佳做法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/36523.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机视觉-期末复习-简答/名词解释/综合设计

目录 第一讲--计算机/机器视觉概述 名词解释 简答 第二讲--图像处理概述 名词解释 简答 第三讲没划重点习题 第四讲--特征提取与选择 名词解释 简答 综合题 第五讲--不变特征 名词解释 简答 第六讲--物体分类与检测 简答 综合题 第七讲--视觉注意机制 简答 …

三角洲行动卡顿严重?这样快速解决三角洲行动国服卡顿问题

三角洲行动官方精心设计的游戏地图和敌人布局,加上“曼德尔砖”等目标导向性道具的引入,更是为玩家之间的竞技和争夺增添了无数的变数。每一次的争夺都如同是一场智慧与勇气的较量,让人热血沸腾,无法自拔。在这个战场上&#xff0…

第六篇:精通Docker Compose:打造高效的多容器应用环境

精通Docker Compose:打造高效的多容器应用环境 1. 引言 1.1 目的与重要性 在现代软件开发中,随着应用程序的复杂性不断增加,传统的单一容器部署方式已无法满足需求。Docker Compose作为一种强大的工具,专门用于定义和运行多容器…

5、广告-广告投放

本章详细讨论了广告投放的各个环节,包括投放计划、广告策划与提案、广告投放执行、数据分析与优化调整、项目总结与结案报告以及执行部门与岗位职责。这一章为广告投放提供了系统化的方法和步骤,确保广告投放的效果和效率。 一、投放计划(Ca…

用户中心项目全流程

企业做项目流程 需求分析 > 设计(概要设计 、 详细设计) > 技术选型 >初始化项目 / 引入需要的技术 > 写个小demo > 写代码 (实现业务逻辑) > 测试(单元测试)> 代码提交 / 代码评审 …

ClickHouse-Keeper安装使用

1.rpm 安装 clickhouse-keeper rpm -ivh clickhouse-keeper-23.8.11.28.x86_64.rpm 2.修改keeper的配置文件 vi /etc/clickhouse-keeper/keeper_config.xml修改部分参数 1.可修改日志等存储路径 2.增加监听配置 <listen_host>0.0.0.0</listen_host> 3.server_id…

HarmonyOS Next开发学习手册——层叠布局 (Stack)

概述 层叠布局&#xff08;StackLayout&#xff09;用于在屏幕上预留一块区域来显示组件中的元素&#xff0c;提供元素可以重叠的布局。层叠布局通过 Stack 容器组件实现位置的固定定位与层叠&#xff0c;容器中的子元素依次入栈&#xff0c;后一个子元素覆盖前一个子元素&…

【Spring】SpringCloudAlibaba学习笔记

Nacos Nacos是一个更易于构建云原生应用的动态服务发现/服务配置和服务管理平台核心功能: 服务注册: Nacos Client会通过发送REST请求向Nacos Server注册自己的服务, 提供自己的元数据, 如ip地址/端口等信息; Nacos Server收到注册请求后, 就会把这些信息存储在Map中服务心跳:…

oracle with as是临时表还是变量

在 Oracle 数据库中&#xff0c;WITH 子句&#xff08;也称为 Common Table Expressions&#xff0c;简称 CTE&#xff09;不是用来创建临时表或变量的。但它在查询中提供了一种临时命名结果集的方式&#xff0c;这些结果集可以在主查询或该 WITH 子句内的其他 CTE 中被引用。 …

Java毕业设计 基于SSM vue药店管理系统小程序 微信小程序

Java毕业设计 基于SSM vue药店管理系统小程序 微信小程序 SSM 药店管理系统小程序 功能介绍 用户 登录 注册 首页 药品信息 药品详情 加入购物车 立即购买 收藏 购物车 立即下单 新增收货地址 我的收藏管理 用户充值 我的订单 留言板 管理员 登录 个人中心 修改密码 个人信息…

分布式并行最短路径

此前我 “自然而然” 做了两个小算法&#xff0c;最短路径 和 最小生成树&#xff0c;我喜欢大自然的第一性原理&#xff0c;最小作用量&#xff0c;梯度下降&#xff0c;爆炸&#xff0c;河水泛滥&#xff0c;本质上都是一回事。 大自然另一风格是分布式并行&#xff0c;没外…

使用C#检查PPT中的视频

起因 有些PPT文件&#xff0c;视频没有打包在文件中&#xff0c;而是引用了本地的文件。在复制PPT时&#xff0c;有时会遗漏了视频文件。之前我经常给同事处理这个问题&#xff0c;就写了这个代码&#xff0c;用于检查PPT中的视频。代码比较简单 就是就2个遍历。 先循环 slid…

Java使用poi生成word文档的简单实例

Java使用poi生成word文档的简单实例 生成的效果如下&#xff1a; 用到的poi的简单的知识 新建一个word对象 //新建文件 XWPFDocument document new XWPFDocument();新建段落以及文字样式 //创建段落 XWPFParagraph paragraph document.createParagraph(); paragraph.se…

React学习(三)

React的核心理论主要围绕其构建用户界面的方式&#xff0c;下面将分点详细解释React的核心理论&#xff1a; 组件化&#xff1a; React的核心概念是组件化&#xff0c;即将UI拆分成多个独立、可复用的部分&#xff0c;这些部分就是组件。组件可以是class组件或函数组件&#x…

Idea启动服务报 Command line is too long

一、背景 合不同分支代码后&#xff0c;启动服务报 Error running Application, Command line is too long, Shorten the command line via JAR manifest or via a classpath file and rerun. 没有在意&#xff0c;然后点击了manifest 来进行 二、问题 然后自己在重新启动&…

单线程单元模型简述

单线程单元模型简述 单线程单元&#xff08;Single-Threaded Apartment, STA&#xff09;模型是Windows COM&#xff08;Component Object Model&#xff09;技术中定义的一种线程同步模型。在STA模型中&#xff0c;每个线程都拥有自己的独立地址空间&#xff0c;并且假设该线…

Linux网络编程:套接字编程

1.Socket套接字编程 1.1.什么是socket套接字编程 Socket套接字编程 是一种基于网络层和传输层网络通信方式&#xff0c;它允许不同主机上的应用程序之间进行双向的数据通信。Socket是网络通信的基本构件&#xff0c;它提供了不同主机间的进程间通信端点的抽象。一个Socket就是…

智能猫砂盆到底是不是智商税?解救上班族双手的测评合集来了

不得不说&#xff0c;像我这样的上班族真的是很需要一个智能猫砂盆了。普通的猫砂盆一天就要打扫3次&#xff0c;遇到很能拉的猫咪的时候&#xff0c;就不止是三次那么简单了。如果有个产品能帮我解决这个问题&#xff0c;让我能放心外出&#xff0c;那又何乐而不为呢&#xff…

马面裙的故事:汉服如何通过直播电商实现产业跃迁

【潮汐商业评论/原创】 波澜壮阔的千里江山在马面裙的百褶上展开&#xff0c;织金花纹在女性的步伐之间若隐若现&#xff0c;从明清到现代&#xff0c;如今马面裙又流行了回来&#xff0c;成为女性的流行单品&#xff0c;2024年春节期间&#xff0c;马面裙更是成为华夏女孩们的…

Halcon 如何根据特征过滤区域和XLD

一 如何跟进特征过滤区域和XLD dev_open_window(0,0,512,512,black,WindowHandle)read_image(Image,fabrik)threshold(Image,Region,128,255)connection(Region,ConnectedRegions)*根据面积范围[8000,9000] dev_display(Image)select_shape(ConnectedRegions,SelectedRegions,…