混淆点
linux上的编译跟LD_LIBRARY_PATH的关系密不可分,但有时不设置LD_LIBRARY_PATH设置也能编译通过,有时候又不行,特别容易混淆,很多博客一大抄,混淆点没有讲明白,那这个究竟怎么区分?
LD_LIBRAY_PATH的作用
一句话来说就是用来寻找动态库的路径,比如程序编译时,比如服务启动时,比如动态打开时,凡是涉及到需要动态搜索的加载动态库的,都需要设置这个路径,这是linux用来寻找动态库的
所有动态库路径都需要加载到LD_LIBRAY_PATH中么?
不一定。有时候没加入也没问题呢?原因要从系统寻找动态库的方法讲起有默认系统寻找路径,有编译时候路径可以指示等等,这个网上有很多文章讲述,这里不再赘述。
必须要加入LD_LIBRAY_PATH
比如间接引用的动态库路径,比如编译时用到了a库,那么在makefile中可以用-L和-l链接a库,这时候即时不配置LD_LIBRAY_PATH也没问题,但是如果a库中引用了b库,那么必须要将b库放到LD_LIBRARY_PTH。
总结
一句话总结是,保险起见,全部加入到动态库。如果没加入也没问题,是因为从别的途径也能获取到这个库的路径