Ubuntu:环境变量PATH、LIBRARY_PATH和LD_LIBRARY_PATH的区别

今天写有关PATH的时候发现还有LIBRARY_PATH和LD_LIBRARY_PATH这两个系统环境变量,到底这这三个系统变量到底有什么区别呢?

PATH
之前配置我们就需要设置PATH,配置环境,否则使用:

nvcc -V

就会出现问题,所以PATH主要是系统通过PATH这个环境变量来获得可执行文件所在的位置,然后在运行一下对应的可执行文件,我们通过printenv命令查看一下:
在这里插入图片描述
可以看到添加到PATH变量下的路径基本都是不同软件bin文件夹,也证实了我们之前的说法

那么看上去特别像的LIBRARY_PATH和LD_LIBRARY_PATH它们之间到底有什么区别呢?
在这里插入图片描述上面是LZ搜到的高赞回答。

LIBRARY_PATH: gcc在编译之前使用LIBRARY_PATH来搜索包含静态和共享库的目录,这些目录需要链接到您的程序。

LD_LIBRARY_PATH:程序已经成功编译并且链接成功后,使用LD_LIBRARY_PATH来搜索目录。

编辑:如上所示,您的库可以是静态的或共享的。 如果它是静态的,则代码将被复制到您的程序中,并且在您的程序被编译和链接后,您无需搜索库。 如果您的库是共享库,则需要将其动态链接到您的程序,这就是LD_LIBRARY_PATH发挥作用的时候。

所以按照上面的描述,LD_LIBRARY_PATH变量中只有动态库有意义,静态库在编译的时候就已经加到编译的程序中了,自然也不需要添加到LD_LIBRARY_PATH这个路径下了。

参考地址:
https://stackoverflow.com/questions/4250624/ld-library-path-vs-library-path

发布了300 篇原创文章 · 获赞 203 · 访问量 59万+

猜你喜欢

转载自blog.csdn.net/Felaim/article/details/103385844