当前位置: 技术问答>linux和unix
linux下如何查看动态链接库是动态链接的呢?
来源: 互联网 发布时间:2017-04-23
本文导语: 如题,在linux下,有一个可执行程序a,一个b.so文件,如何能知道a是不是在程序运行的时候才去加载b.so呢?现在的情况是将此两个文件放在同一个目录a能正常运行,如果把b.so移走,再执行a的时候,就会报b.so未找到...
如题,在linux下,有一个可执行程序a,一个b.so文件,如何能知道a是不是在程序运行的时候才去加载b.so呢?现在的情况是将此两个文件放在同一个目录a能正常运行,如果把b.so移走,再执行a的时候,就会报b.so未找到。这样就能算是a在运行的时候才去加载b.so吗?有没有其他什么工具或者其他方法能确定一下这个呢??求指教,谢谢!
|
ldd a
ldconfig -v | grep b.so
ldconfig -v | grep b.so
|
ldd a会列出a所依赖的动态库。
|
可以export LD_LIBRARY_PATH指定动态库路径。
|
上面的都对。
动态库确实是程序运行时才去加载的,但是加载库的路径会根据你编译参数而有不同。
比如,编译时参数是 -lb,那么程序会在系统的/lib/,/usr/lib等标准路径里面找 名为libb.so的库;系统默认的lib路径可以通过ldconfig 添加和查看。
编译时参数是 ./b.so 或者 /home/b.so,那么程序会在 ./ /home/路径下找名为b.so的库。
动态库确实是程序运行时才去加载的,但是加载库的路径会根据你编译参数而有不同。
比如,编译时参数是 -lb,那么程序会在系统的/lib/,/usr/lib等标准路径里面找 名为libb.so的库;系统默认的lib路径可以通过ldconfig 添加和查看。
编译时参数是 ./b.so 或者 /home/b.so,那么程序会在 ./ /home/路径下找名为b.so的库。