详解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)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。 使用场景: 在不影响其他对象的情况下ÿ…...

idea大量爆红问题解决
问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...
【杂谈】-递归进化:人工智能的自我改进与监管挑战
递归进化:人工智能的自我改进与监管挑战 文章目录 递归进化:人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管?3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...

从WWDC看苹果产品发展的规律
WWDC 是苹果公司一年一度面向全球开发者的盛会,其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具,对过去十年 WWDC 主题演讲内容进行了系统化分析,形成了这份…...
【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表
1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

ABAP设计模式之---“简单设计原则(Simple Design)”
“Simple Design”(简单设计)是软件开发中的一个重要理念,倡导以最简单的方式实现软件功能,以确保代码清晰易懂、易维护,并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计,遵循“让事情保…...

七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...
xmind转换为markdown
文章目录 解锁思维导图新姿势:将XMind转为结构化Markdown 一、认识Xmind结构二、核心转换流程详解1.解压XMind文件(ZIP处理)2.解析JSON数据结构3:递归转换树形结构4:Markdown层级生成逻辑 三、完整代码 解锁思维导图新…...

aardio 自动识别验证码输入
技术尝试 上周在发学习日志时有网友提议“在网页上识别验证码”,于是尝试整合图像识别与网页自动化技术,完成了这套模拟登录流程。核心思路是:截图验证码→OCR识别→自动填充表单→提交并验证结果。 代码在这里 import soImage; import we…...
深入解析 ReentrantLock:原理、公平锁与非公平锁的较量
ReentrantLock 是 Java 中 java.util.concurrent.locks 包下的一个重要类,用于实现线程同步,支持可重入性,并且可以选择公平锁或非公平锁的实现方式。下面将详细介绍 ReentrantLock 的实现原理以及公平锁和非公平锁的区别。 ReentrantLock 实现原理 基本架构 ReentrantLo…...
大模型真的像人一样“思考”和“理解”吗?
Yann LeCun 新研究的核心探讨:大语言模型(LLM)的“理解”和“思考”方式与人类认知的根本差异。 核心问题:大模型真的像人一样“思考”和“理解”吗? 人类的思考方式: 你的大脑是个超级整理师。面对海量信…...