详解Linux下的环境变量以及C++库文件和头文件、python库的配置
目录
Linux环境变量配置基本步骤
1.查看环境变量
2.设置环境变量
3.永久性设置环境变量
4.使用环境变量
C++ 库文件和头文件环境变量配置
1.配置so库文件的环境变量
2.配置头文件的环境变量
Python库环境变量配置
Linux配置执行文件环境变量
我们都习惯在Windows 上配置环境变量,例如 Windows设置系统环境变量即在path中添加配置路径即可;使用VS则在项目设置中配置库文件和头文件路径;使用vscode 则常用cmake编译,编写CMakeLists.txt 链接库文件或头文件即可。
而在Linux 环境中,则需要记住一些常用命令和常量值,在此总结如下,以供参考。
Linux环境变量配置基本步骤
在Linux中,环境变量是一些可被程序访问的全局变量,可以用于配置系统行为、定义软件的运行时参数和其他的目的。以下是环境变量配置的详细步骤:
1.查看环境变量
使用printenv
或echo $VARIABLE_NAME
命令可以查看当前环境变量。printenv
命令可以列出所有的环境变量,而echo $
VARIABLE_NAME
命令则可以输出指定环境变量的值。
2.设置环境变量
在Linux中,可以使用export
命令将变量设置为环境变量。例如,要将MY_VAR
设置为hello
,可以运行
export MY_VAR=hello
也可以将多个变量设置为环境变量,例如:
export MY_VAR1=value1 export MY_VAR2=value2
3.永久性设置环境变量
如果想要在每次登录时自动加载环境变量,需要将环境变量添加到.bashrc
文件中。这个文件是每个用户的个人bash配置文件,当用户登录时,它会自动加载。可以通过以下命令打开这个文件:
vi ~/.bashrc
在文件的末尾添加以下内容:
export MY_VAR=value
然后按下Esc
键退出编辑模式,输入:wq
保存并退出。
配置完成之后需要执行
source ~/.bashrc
命令来使环境变量生效。这个命令会重新加载 .bashrc
文件,让配置的环境变量生效。
4.使用环境变量
在程序中,可以使用$VARIABLE_NAME
来引用环境变量的值。例如,在bash脚本中,可以使用以下代码来获取MY_VAR
的值:
echo $MY_VAR
这将输出hello
,这是我们在步骤2中设置的值。
总之,Linux的环境变量配置非常简单,只需要使用export
命令即可将变量设置为环境变量,然后在程序中使用$VARIABLE_NAME
来引用它们。对于需要在每次登录时自动加载的环境变量,只需将其添加到.bashrc
文件中即可。
C++ 库文件和头文件环境变量配置
当编译C++程序时,如果依赖某些外部库文件或头文件,我们需要告诉编译器它们的位置。一种常见的做法是将这些路径设置为环境变量,以便编译器可以在编译过程中自动查找它们。以下是两个案例:
1.配置so库文件的环境变量
假设我们有一个名为libfoo.so
的共享库,位于/usr/local/lib
目录下。我们可以通过以下命令将其路径添加到LD_LIBRARY_PATH
环境变量中:
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
这样,当我们编译使用libfoo.so
的程序时,编译器会自动在/usr/local/lib
目录中查找该库文件。
2.配置头文件的环境变量
假设我们有一个名为foo.h
的头文件,位于/usr/local/include
目录下。我们可以通过以下命令将其路径添加到CPLUS_INCLUDE_PATH
环境变量中:
export CPLUS_INCLUDE_PATH=/usr/local/include:$CPLUS_INCLUDE_PATH
这样,当我们编译使用foo.h
的程序时,编译器会自动在/usr/local/include
目录中查找该头文件。
当然我们也可以将这两条指令写入到~/.bashrc中,使之永久生效。
总之,配置C++的so库文件的环境变量或头文件的环境变量是一种常见的做法,可以让编译器在编译过程中自动查找它们,提高编译效率。
Python库环境变量配置
在Python中,我们也可以通过设置环境变量来告诉Python解释器查找库文件的位置。以下是一个例子:
假设我们有一个名为mylib
的Python库,位于/path/to/mylib
目录下。我们可以通过以下命令将其路径添加到PYTHONPATH
环境变量中:
export PYTHONPATH=/path/to/mylib:$PYTHONPATH
这样,当我们在Python中使用import mylib
时,Python解释器会自动在/path/to/mylib
目录中查找该库文件。
另外,我们也可以使用sys.path
模块来动态添加Python库的路径,例如:
import sys
sys.path.append('/path/to/mylib')
import mylib
这样,Python解释器也会自动在/path/to/mylib
目录中查找该库文件。
Linux配置执行文件环境变量
配置可执行文件的环境变量可以让该可执行文件在任何路径下都可以被直接执行,而无需在可执行文件的路径下运行。以下是一个例子:
假设我们有一个名为myprog
的可执行文件,位于/path/to/myprog
目录下。我们可以将其路径添加到PATH
环境变量中,以便在任何路径下都可以直接运行该可执行文件。例如:
export PATH=/path/to:$PATH
这样,当我们在任何路径下执行myprog
时,系统会自动在/path/to
目录中查找该可执行文件并执行它。
另外,我们也可以将可执行文件复制到系统的标准路径(例如/usr/bin
或/usr/local/bin
),这样在任何路径下都可以直接运行该可执行文件。但是这种做法可能需要管理员权限。
需要注意,过多的环境变量设置可能会影响系统性能和安全性,因此应该谨慎使用。
相关文章:
详解Linux下的环境变量以及C++库文件和头文件、python库的配置
目录 Linux环境变量配置基本步骤 1.查看环境变量 2.设置环境变量 3.永久性设置环境变量 4.使用环境变量 C 库文件和头文件环境变量配置 1.配置so库文件的环境变量 2.配置头文件的环境变量 Python库环境变量配置 Linux配置执行文件环境变量 我们都习惯在Windows 上配置…...

企业级分布式数据库 - GaussDB介绍
目录 什么是GaussDB 简介 应用场景 产品架构 产品优势 安全 责任共担 身份认证与访问控制 数据保护技术 审计与日志 监控安全风险 故障恢复 认证证书 GaussDB与其他服务的关系 约束与限制 计费模式 什么是GaussDB …...

Linux I2C 驱动实验
目录 一、Linux I2C 驱动简介 1、I2C 总线驱动 2、I2C 设备驱动 1、 i2c_client 结构体 2、 i2c_driver 结构体 二、硬件分析 三、设备树编写 1、pinctrl_i2c1 2、在 i2c1 节点追加 ap3216c 子节点 3、验证 四、 代码编写 1、makefile 2、ap3216c.h 3、ap3216c.c …...

DC-DC模块电源隔离直流升压高压稳压输出5v12v24v转60v100v110v150v220v250v300v400v500v
特点效率高达80%以上1*1英寸标准封装单电压输出稳压输出工作温度: -40℃~85℃阻燃封装,满足UL94-V0 要求温度特性好可直接焊在PCB 上应用HRB 0.2~10W 系列模块电源是一种DC-DC升压变换器。该模块电源的输入电压分为:4.5~9V、9~18V、及18~36VDC标准&#…...
EF有几种模式,EF的三种模式分别是什么?
EF有几种模式,EF的三种模式分别是什么? 第一种:DataBase First DataBase First传统的表驱动方式创建EDM,然后通过EDM生成模型和数据层代码。除生成实体模型和自跟踪实现模型,还支持生成轻型DbContext。 解释…...

数据可视化展示:打工人常见职业病,颈腰椎病占比最高达66.51%
身体健康才是一切的根本。只有身体健健康康才能更好的去享受世间的美好,无论是谁都应当注重身体健康,而不是无度的挥霍它! 良好的身体,释放给工作,健壮的体魄,享受美好生活,良好的心态ÿ…...

【食品图像识别】Large Scale Visual Food Recognition
1 引言 视觉智能部与中科院计算所于2020-2021年度展开了《细粒度菜品图像识别和检索》科研课题合作,本文系双方联合在IEEE T-PAMI2023发布论文《Large Scale Visual Food Recognition》 (Weiqing Min, Zhiling Wang, Yuxin Liu, Mengjiang Luo, Liping Kang, Xiaom…...

RAN-in-the-Cloud:为 5G RAN 提供云经济性
RAN-in-the-Cloud:为 5G RAN 提供云经济性 5G 部署在全球范围内一直在加速。 许多电信运营商已经推出了5G服务并正在快速扩张。 除了电信运营商之外,企业也对使用 5G 建立私有网络产生了浓厚的兴趣,这些私有网络利用了更高的带宽、更低的延迟…...
vector、list、queue
引用:windows程序员面试指南 vector vector 类似于C语言中的数组 vector 支持随机访问,访问某个元素的时间复杂度 O(1) vector 插入和删除元素效率较低,时间复杂度O(n) vector 是连续存储,没有内存碎片,空间利用率高…...
操作系统面经
进程与线程区别 1.进程是资源分配的最小单位,线程是程序执行的最小单位(资源调度的最小单位) 2.进程有自己的独立地址空间,每启动一个进程,系统就会为它分配地址空间,建立数据表来维护代码段、堆栈段和数…...

一天约了4个面试,复盘一下面试题和薪资福利
除了最新的面经分享,还有字节大佬的求职面试答疑,告诉你关键问题是什么?少走弯路。**另外本文也汇总了6份大厂面试题:字节、腾讯、小米、腾讯云、滴滴、小米游戏。**希望对大家有帮助。 前言 昨天我的交流群里,有位宝…...

详解单链表(内有精美图示哦)
全文目录引言链表链表的定义与结构链表的分类单链表的实现及对数据的操作单链表的创建与销毁创建销毁单链表的打印单链表的头插与头删头插头删单链表的尾插与尾删尾插尾删单链表的查找单链表在pos位置后插入/删除插入删除单链表在pos位置插入/删除插入删除总结引言 在上一篇文…...
csdn文章导航
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注…...

【Spring】掌握 Spring Validation 数据校验
个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ Spring Validation 数据校验一、什么是 Spring…...
定语 从句
回顾能作定语的成分 形容词:She is a responsible girl.她是一个负责任的姑娘。(前置定语) The girl responsible was expelled.对此负责的姑娘被开除了。(后置定语) 代词:Whose f…...

【数据可视化工具】浅谈 DataEase 和 FineBI 支持的数据源
前言最近对市面上比较火热的数据可视化工具 DataEase 和 FineBI 进行了调研,在支持的数据源方面感觉不太一样,所以就有了这篇文章,话不多说,我们一起来看一下吧!以下的内容,大多来自两个工具的官方文档&…...
100种思维模型之上帝视角思维模型-025
惊奇、愤怒、郁闷,我们觉得生活不精彩,事情乱作一团,但这仅仅是视角问题而已。 换个视角,可以看到不同的世界。 “上帝视角思维模型”,即以一个更高、更客观、更理性的角度来看问题,从而做出理性的决策。 …...
从这5个方面,总结我当PM的第一年
以下5个方面(学习、思考、沟通、执行、产品)的分享,都是我站在巨人的肩膀上,结合自己所学所做总结而来;同时,我也继续学习,不断完善这些知识。如有不当,欢迎大家指正~一、学习&#…...

ChatGPT可以作为一个翻译器吗?
论文地址:https://arxiv.org/abs/2301.08745.pdf 背景 自从OpenAI2022年11月30日发布ChatGPT以来,基本上把NLP所有任务大统一了,那么在机器翻译的表现到底如何呢?腾讯AI Lab在翻译Prompt、多语言翻译以及翻译鲁棒性三方面做了一…...

详述java的设计模式(三)
1.装饰者模式 装饰者模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。 使用场景: 在不影响其他对象的情况下ÿ…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造,完美适配AGV和无人叉车。同时,集成以太网与语音合成技术,为各类高级系统(如MES、调度系统、库位管理、立库等)提供高效便捷的语音交互体验。 L…...
OpenLayers 可视化之热力图
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...
Vue记事本应用实现教程
文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展:显示创建时间8. 功能扩展:记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...
React hook之useRef
React useRef 详解 useRef 是 React 提供的一个 Hook,用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途,下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...
IGP(Interior Gateway Protocol,内部网关协议)
IGP(Interior Gateway Protocol,内部网关协议) 是一种用于在一个自治系统(AS)内部传递路由信息的路由协议,主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...

CentOS下的分布式内存计算Spark环境部署
一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...
大学生职业发展与就业创业指导教学评价
这里是引用 作为软工2203/2204班的学生,我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要,而您认真负责的教学态度,让课程的每一部分都充满了实用价值。 尤其让我…...

如何在网页里填写 PDF 表格?
有时候,你可能希望用户能在你的网站上填写 PDF 表单。然而,这件事并不简单,因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件,但原生并不支持编辑或填写它们。更糟的是,如果你想收集表单数据ÿ…...

USB Over IP专用硬件的5个特点
USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中,从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备(如专用硬件设备),从而消除了直接物理连接的需要。USB over IP的…...

中医有效性探讨
文章目录 西医是如何发展到以生物化学为药理基础的现代医学?传统医学奠基期(远古 - 17 世纪)近代医学转型期(17 世纪 - 19 世纪末)现代医学成熟期(20世纪至今) 中医的源远流长和一脉相承远古至…...