当前位置: 技术问答>linux和unix
请教一下Linux的动态库加载方式(是启动加载还是运行加载?)
来源: 互联网 发布时间:2016-06-27
本文导语: 之前程序使用了很多动态库,占据了我们很多空间。这几天在整理动态库,去掉了一些我认为无用的动态库。程序能启动起来,但是不知道会不会因为我误删掉了一些动态库,导致程序崩溃。 所以想请教一下Linux的动...
之前程序使用了很多动态库,占据了我们很多空间。这几天在整理动态库,去掉了一些我认为无用的动态库。程序能启动起来,但是不知道会不会因为我误删掉了一些动态库,导致程序崩溃。
所以想请教一下Linux的动态库是在程序启动的时候加载还是在运行的时候加载,会不会像Windows一样运行着弹出来一个对话框,通知缺动态库,然后程序崩掉?
所以想请教一下Linux的动态库是在程序启动的时候加载还是在运行的时候加载,会不会像Windows一样运行着弹出来一个对话框,通知缺动态库,然后程序崩掉?
|
.so文件并不一定是启动时加载,也支持动态加载,动态加载的不需要在编译连接时指定。动态加载的用dlopen.
http://topic.csdn.net/u/20090817/16/13bbdd5a-8f1a-4fcd-89e7-b1cdf1e14232.html
http://topic.csdn.net/u/20090817/16/13bbdd5a-8f1a-4fcd-89e7-b1cdf1e14232.html
|
你要能编译过去,那就说明函数符号可全部找到,现在就要看看你依赖的库是不是依赖其他的库了
|
基本和windows一样, 如果链接到的动态库没有找到,楼主运行这个执行文件的时候,会报没有这个文件存在。
另外ldd 你的应用程序可以看到你的程序所有动态库的link信息。
另外ldd 你的应用程序可以看到你的程序所有动态库的link信息。