linux下如何查看动态链接库是动态链接的呢?

时间:2022-06-21 15:50:40
如题,在linux下,有一个可执行程序a,一个b.so文件,如何能知道a是不是在程序运行的时候才去加载b.so呢?现在的情况是将此两个文件放在同一个目录a能正常运行,如果把b.so移走,再执行a的时候,就会报b.so未找到。这样就能算是a在运行的时候才去加载b.so吗?有没有其他什么工具或者其他方法能确定一下这个呢??求指教,谢谢!

4 个解决方案

#1


ldd a 
ldconfig -v | grep b.so

#2


ldd a会列出a所依赖的动态库。

#3


可以export LD_LIBRARY_PATH指定动态库路径。

#4


上面的都对。

动态库确实是程序运行时才去加载的,但是加载库的路径会根据你编译参数而有不同。

比如,编译时参数是 -lb,那么程序会在系统的/lib/,/usr/lib等标准路径里面找 名为libb.so的库;系统默认的lib路径可以通过ldconfig 添加和查看。

编译时参数是 ./b.so 或者 /home/b.so,那么程序会在 ./ /home/路径下找名为b.so的库。

#1


ldd a 
ldconfig -v | grep b.so

#2


ldd a会列出a所依赖的动态库。

#3


可以export LD_LIBRARY_PATH指定动态库路径。

#4


上面的都对。

动态库确实是程序运行时才去加载的,但是加载库的路径会根据你编译参数而有不同。

比如,编译时参数是 -lb,那么程序会在系统的/lib/,/usr/lib等标准路径里面找 名为libb.so的库;系统默认的lib路径可以通过ldconfig 添加和查看。

编译时参数是 ./b.so 或者 /home/b.so,那么程序会在 ./ /home/路径下找名为b.so的库。