当前位置: 首页 > news >正文

详解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.查看环境变量

使用printenvecho $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。 解释&#xf…...

数据可视化展示:打工人常见职业病,颈腰椎病占比最高达66.51%

身体健康才是一切的根本。只有身体健健康康才能更好的去享受世间的美好,无论是谁都应当注重身体健康,而不是无度的挥霍它! 良好的身体,释放给工作,健壮的体魄,享受美好生活,良好的心态&#xff…...

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

华为云AI开发平台ModelArts

华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...

前端倒计时误差!

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

QMC5883L的驱动

简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...

【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)

要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况,可以通过以下几种方式模拟或触发: 1. 增加CPU负载 运行大量计算密集型任务,例如: 使用多线程循环执行复杂计算(如数学运算、加密解密等)。运行图…...

12.找到字符串中所有字母异位词

🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...

【JavaSE】绘图与事件入门学习笔记

-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...

Springboot社区养老保险系统小程序

一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,社区养老保险系统小程序被用户普遍使用,为方…...

Java线上CPU飙高问题排查全指南

一、引言 在Java应用的线上运行环境中,CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时,通常会导致应用响应缓慢,甚至服务不可用,严重影响用户体验和业务运行。因此,掌握一套科学有效的CPU飙高问题排查方法&…...

Pinocchio 库详解及其在足式机器人上的应用

Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库,专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性,并提供了一个通用的框架&…...

免费数学几何作图web平台

光锐软件免费数学工具,maths,数学制图,数学作图,几何作图,几何,AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...