在嵌入式开发中,小伙伴经常为配置开发环境头疼,比如我们最常见的交叉编译环境arm-linux-gcc工具链的搭建。我们经常会碰到命令无法找到,无法识别的错误提示。究其原因,其实大多数都是因为我们环境变量没有配置好而已。为了让大家更轻松更明了我们软件运行的环境,在此向大家讲一讲linux中环境变量的一些小知识,帮助大家学习。
环境变量是什么呢?
环境变量一般是指在操作系统中用来指定操作系统运行环境的一些参数
如:临时文件夹位置和系统文件夹位置等。
典型的像linux中的path环境变量,当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到path中指定的路径去找。用户通过设置环境变量,可实现在任何路径下更好的运行进程。
像我们在linux中运行的命令,还有交叉编译工具arm-linux-gcc等。我们以交叉编译工具arm-linux-gcc跟大家举例讲解,环境变量的配置方法。
交叉编译工具arm-linux-gcc配置方法大家熟知的有两种
第一种:编辑/etc/environment文件,加入相应的路径。
$?sudo?vim?/etc/environment?我们在environment文件内容的末尾添上工具的所在的路径。
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/farsight/gcc-4.6.4/bin"
注销后重新登录后生效。
第二种:使用命令:vim?/home/?farsight?/.bashrc?编辑.bashrc文件,添加环境变量。
在该文件中最后一行添加:
export?PATH=$PATH:?/home/farsight/gcc-4.6.4/bin
使用命令:source?/home/?farsight?/.bashrc?使环境变量生效
以上两种方法本质上都是去修改PATH这个环境变量,在PATH这个变量中添加交叉编译工具的路径,这样我们在任意路径下去执行arm-linux-gcc时,系统都能通过PATH找到工具的路径,从而顺畅执行工具。可是小伙伴多半会疑惑,这两种配置方式究竟有什么区别?为什么第一种需要注销后重新登陆生效,而第二种不需要呢?我们接下来带大家深入了解下环境变量相关的知识。
linux中环境变量包括系统级和用户级,系统级的环境变量是每个登录到系统的用户都要读取的系统变量,而用户级的环境变量则是该用户使用系统时加载的环境变量。所谓的环境变量配置文件,就是在shell登陆的时候自动加载的那些文件。
而登陆分为两种登陆却分为两种:
login?shell登陆和interactive?shell登陆。
所谓的login?shell登陆,实际上就是指需要输入密码的登陆。具体的说,包括开机登陆、ssh登陆,或者是输入bash?--login这种“假装自己输入密码登陆”的方式。?
在这种登陆方式下,系统会先读取/etc/profile文件,然后,系统会依次搜索~/.bash_profile、~/.bash_login、~/.profile?这三个文件,并运行只其中第一个存在的文件。
Linux系统中/etc/environment是设置整个系统的环境,而/etc/profile是设置所有用户的环境,前者与登录用户无关,后者与登录用户有关。
login?shell登陆时系统会先执行profile文件再读取environment获取用户及系统的环境变量信息以为运行准备好环境。因此这些文件都是在登陆的时候就读取生效了,如果改变以后需要重新登陆重新读取生效。
所谓的interactive?shell登陆,其实就是相对于login?shell登陆而言的。我们平时在登陆后右键打开终端、或者CTRL+ALT+T打开终端都是interactive?shell登陆。?在这种登陆方式下,系统会依次读取/etc/bash.bashrc和~/.bashrc,并加以执行。?通常情况下,~/.bashrc文件里会默认记录一些常量和一些别名,比如&PATH变量,该变量记录着一些命令可执行文件的路径等,当我们修改了文件,只需要source一下文件即可生效。
以上分析给我们的启示是,当我们为服务器配置变量时,尽量配置到/etc/profile里或者~/.bash_profile里,因为用ssh登录服务器是基本上用不到.bashrc文件的;当我们给自己的电脑配置环境变量时,尽量配置到.bashrc里,因为这样我们只要打开终端就会读入这个文件,这样就可以不用注销就能应用配置了(只有注销重新登录才会应用/etc/profile一类的配置文件)。
好了,读到这小伙伴应该对环境变量的相关知识有一定了解了吧,应该知道环境变量有什么作用,怎么配置了吧。希望大家以后配置工具的环境变量不再迷惑了。
嵌入式物联网需要学的东西真的非常多,千万不要学错了路线和内容,导致工资要不上去!
无偿分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!某鱼上买估计至少要好几十。
(点击找小助理领取)
扫码进群领资料https://s.pdb2.com/pages/20230519/16QijNiGb32IFIn.html