查找程序加载的动态库的路径
来源:互联网 发布:网络基础设施安全 编辑:程序博客网 时间:2024/05/16 17:43
事件的起因:
最近编译gtk版的webkit后发现,他需要脚本Tools/Scripts/run-launcher来启动WebKitBuild/Debug/Programs的GtkLauncher、MiniBrowser等
如果正常运行会发生出下异常
luogw@luogw-pc:~/study/webkit/webkit_nightly/WebKit-r150880/WebKitBuild/Debug/Programs$ ./GtkLauncher ./GtkLauncher: error while loading shared libraries: libgstreamer-1.0.so.0: cannot open shared object file: No such file or directory
想搞清楚与做到的事:
1)为什么需要脚本来启动,直接运行会出现动态库加载异常,即为什么动态库搜索不到;
2)如果直接在Programs运行GtkLauncher等需要做那些工作;
分析与解决问题;
1)根据异常信息,是动态库加载不到,另外加上之前发现到目前webkit gtk的编译与之前有所不同,最大的区别在于编译需要的依赖库是实时编译的,即一定在编译目录下的某个子目录存放着依赖的动态库,然后通过运行脚本来启动的过程中应该是为作某些工作,让GtkLauncher等能找到需要的动态库;
2)由第一步的分析,到编译目录下搜索.so文件,发现WebKitBuild/Dependencies/Root/lib64/下存放着n多动态库,如下
cairo libcairo-script-interpreter.so.2.11200.8 libgio-2.0.so libgstbasevideo-1.0.so.0.7.0 libgstriff-1.0.so.0 libharfbuzz.sogdk-pixbuf-2.0 libcairo.so libgio-2.0.so.0 libgstcheck-1.0.so libgstriff-1.0.so.0.7.0 libharfbuzz.so.0gio libcairo.so.2 libgio-2.0.so.0.3600.0 libgstcheck-1.0.so.0 libgstrtp-1.0.so libharfbuzz.so.0.914.0girepository-1.0 libcairo.so.2.11200.8 libglib-2.0.so libgstcheck-1.0.so.0.7.0 libgstrtp-1.0.so.0 libpixman-1.aglib-2.0 libffi-3.0.10 libglib-2.0.so.0 libgstcodecparsers-1.0.so libgstrtp-1.0.so.0.7.0 libpixman-1.sognome-settings-daemon-3.0 libffi.a libglib-2.0.so.0.3600.0 libgstcodecparsers-1.0.so.0 libgstrtsp-1.0.so libpixman-1.so.0gstreamer-1.0 libffi.so libgmodule-2.0.so libgstcodecparsers-1.0.so.0.7.0 libgstrtsp-1.0.so.0 libpixman-1.so.0.24.0gtk-2.0 libffi.so.5 libgmodule-2.0.so.0 libgstcontroller-1.0.so libgstrtsp-1.0.so.0.7.0 librsvg-2.agtk-3.0 libffi.so.5.0.10 libgmodule-2.0.so.0.3600.0 libgstcontroller-1.0.so.0 libgstsdp-1.0.so librsvg-2.solibatk-1.0.so libfontconfig.a libgobject-2.0.so libgstcontroller-1.0.so.0.7.0 libgstsdp-1.0.so.0 librsvg-2.so.2libatk-1.0.so.0 libfontconfig.so libgobject-2.0.so.0 libgstfft-1.0.so libgstsdp-1.0.so.0.7.0 librsvg-2.so.2.36.1libatk-1.0.so.0.20809.1 libfontconfig.so.1 libgobject-2.0.so.0.3600.0 libgstfft-1.0.so.0 libgstsignalprocessor-1.0.so libsoup-2.4.alibatk-bridge-2.0.so libfontconfig.so.1.4.4 libgstapp-1.0.so libgstfft-1.0.so.0.7.0 libgstsignalprocessor-1.0.so.0 libsoup-2.4.solibatk-bridge-2.0.so.0 libfreetype.a libgstapp-1.0.so.0 libgstnet-1.0.so libgstsignalprocessor-1.0.so.0.7.0 libsoup-2.4.so.1libatk-bridge-2.0.so.0.0.0 libfreetype.so libgstapp-1.0.so.0.7.0 libgstnet-1.0.so.0 libgsttag-1.0.so libsoup-2.4.so.1.6.0libatspi.so libfreetype.so.6 libgstaudio-1.0.so libgstnet-1.0.so.0.7.0 libgsttag-1.0.so.0 libxml2.alibatspi.so.0 libfreetype.so.6.10.0 libgstaudio-1.0.so.0 libgstpbutils-1.0.so libgsttag-1.0.so.0.7.0 libxml2.solibatspi.so.0.0.1 libgailutil-3.so libgstaudio-1.0.so.0.7.0 libgstpbutils-1.0.so.0 libgstvideo-1.0.so libxml2.so.2libcairo.a libgailutil-3.so.0 libgstbase-1.0.so libgstpbutils-1.0.so.0.7.0 libgstvideo-1.0.so.0 libxml2.so.2.9.0libcairo-gobject.a libgailutil-3.so.0.0.0 libgstbase-1.0.so.0 libgstphotography-1.0.so libgstvideo-1.0.so.0.7.0 pkgconfiglibcairo-gobject.so libgdk-3.so libgstbase-1.0.so.0.7.0 libgstphotography-1.0.so.0 libgthread-2.0.so python2.7libcairo-gobject.so.2 libgdk-3.so.0 libgstbasecamerabinsrc-1.0.so libgstphotography-1.0.so.0.7.0 libgthread-2.0.so.0 xml2Conf.shlibcairo-gobject.so.2.11200.8 libgdk-3.so.0.600.0 libgstbasecamerabinsrc-1.0.so.0 libgstreamer-1.0.so libgthread-2.0.so.0.3600.0 xorglibcairo-script-interpreter.a libgdk_pixbuf-2.0.so libgstbasecamerabinsrc-1.0.so.0.7.0 libgstreamer-1.0.so.0 libgtk-3.solibcairo-script-interpreter.so libgdk_pixbuf-2.0.so.0 libgstbasevideo-1.0.so libgstreamer-1.0.so.0.7.0 libgtk-3.so.0libcairo-script-interpreter.so.2 libgdk_pixbuf-2.0.so.0.2600.5 libgstbasevideo-1.0.so.0 libgstriff-1.0.so libgtk-3.so.0.600.0
3)需要验证与核实,用脚本启动GtkLauncher然后查看程序所加载的动态库的路径(google了一下,找到lsof这个命令)
luogw@luogw-pc:~/study/webkit/webkit_nightly/WebKit-r150880$ ./Tools/Scripts/run-launcher --gtk --debug &[1] 9825luogw@luogw-pc:~/study/webkit/webkit_nightly/WebKit-r150880$ Starting webkit launcher.Gtk-Message: Failed to load module "canberra-gtk-module"
luogw@luogw-pc:~/study/webkit/webkit_nightly/WebKit-r150880$ lsof -p 9825 | grep libgstreamerGtkLaunch 9825 luogw mem REG 8,8 4311120 18000138 /home/luogw/study/webkit/webkit_nightly/WebKit-r150880/WebKitBuild/Dependencies/Root/lib64/libgstreamer-1.0.so.0.4.0
4)通过上述分析只要让GtkLauncher正常的加载到lib64下的动态库就不需要启动脚本来运行(还没搞清楚run-launcher是怎么做到的)
google学习了linux下程序搜索动态库的知识,现学现用,发现设置LD_LIBRARY_PATH是一种解决方案(记得要export下变量)
- 查找程序加载的动态库的路径
- 动态库的查找路径
- Linux动态库的查找路径
- Linux动态库的查找路径
- Mac 改变动态库加载的路径
- c/c++编译时,指定程序运行时查找的动态链接库路径
- c/c++编译时,指定程序运行时查找的动态链接库路径
- 谈谈Linux下动态库查找路径的问题
- Linux下动态库查找路径的问题
- 谈谈Linux下动态库查找路径的问题
- 谈谈Linux下动态库查找路径的问题
- 谈谈Linux下动态库查找路径的问题
- 谈谈Linux下动态库查找路径的问题
- 谈谈Linux下动态库查找路径的问题
- 谈谈Linux下动态库查找路径的问题
- 谈谈Linux下动态库查找路径的问题
- 动态库的加载----程序装载器
- Ubuntu下查找程序的相关路径
- 判断字符串是否是有效的手机号码
- 公司的数据库环境架构之一
- Android小项目之九 两种上下文的区别
- 数学之路(3)-机器学习(3)-机器学习算法-贝叶斯定理(6)
- 白加黑木马拆分HTTP协议躲避网络单包侦测
- 查找程序加载的动态库的路径
- ms sqlerver 锁实践
- spring mvc 框架搭建及详解
- Linux 电子书共享下载--大家一起学习
- 【转载】【leetcode】Surrounded regions
- Android小项目之十 应用程序更新的签名问题
- Fedora19安装VMware 10时内核头文件的设置
- JSP Cookie 使用完全详解
- 单链表之快排