LIBRARY_PATH和LD_LIBRARY_PATH环境变量的区别

发布时间:2016-12-8 20:01:11 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"LIBRARY_PATH和LD_LIBRARY_PATH环境变量的区别",主要涉及到LIBRARY_PATH和LD_LIBRARY_PATH环境变量的区别方面的内容,对于LIBRARY_PATH和LD_LIBRARY_PATH环境变量的区别感兴趣的同学可以参考一下。

LIBRARY_PATH和LD_LIBRARY_PATH是Linux下的两个环境变量,二者的含义和作用分别如下:   LIBRARY_PATH环境变量用于在程序编译期间查找动态链接库时指定查找共享库的路径,例如,指定gcc编译需要用到的动态链接库的目录。   LD_LIBRARY_PATH环境变量用于在程序加载运行期间查找动态链接库时指定除了系统默认路径之外的其他路径,注意,LD_LIBRARY_PATH中指定的路径会在系统默认路径之前进行查找。   区别与使用: 开发时,设置LIBRARY_PATH,以便gcc能够找到编译时需要的动态链接库。 发布时,设置LD_LIBRARY_PATH,以便程序加载运行时能够自动找到需要的动态链接库。 GCC里的链接器的选项是 -rpath 和 -rpath-link,看了下 man ld,大致是这个意思:       GCC链接选项-L,-rpath-link和-rpath -L: “链接”的时候,去找的目录,也就是所有的 -lFOO 选项里的库,都会先从 -L 指定的目录去找,然后是默认的地方。 -rpath_link (或者 -rpath-link):这个也是用于“链接”的时候的,例如你显示指定的需要 FOO.so,但是 FOO.so 本身是需要 BAR.so 的,后者你并没有指定,而是 FOO.so 引用到它,这个时候,会先从 -rpath-link 给的路径里找。 -rpath: “运行”的时候,去找的目录。运行的时候,要找 .so 文件,会从这个选项里指定的地方去找。对于交叉编译,只有配合 --sysroot 选项才能起作用。 也就是说,-rpath指定的路径会被记录在生成的可执行程序中,用于运行时。 -rpath-link 则只用于链接时。

上一篇:Android开发中获取assets文件夹下Xml文件的问题。
下一篇:pkg-config与LD_LIBRARY_PATH

相关文章

相关评论