在使用qvfb做framebuffer模拟的时候,发现几个问题:第一个就是Ubuntu的确不专业,没有很多库的支持,最好使用RedHat,Fedora之类的发行版本,这样会少很多编译之类的麻烦.由于在Ubuntu下编译qvfb缺少了很多库文件,而在没有网络的情况下,补齐这些库和头文件是非常麻烦的,所以准备在fedora中编译好后再放到Ubuntu中使用.由于Ubuntu和fedora下qtsdk的安装不一致,从而发现fedora下编译好的qvfb放到Ubuntu下执行,发现找不到库.利用strace工具看一下这个过程,因为是在fedora下编译的,所以makefile中的链接选项有指明链接库的地址-rpath,这个地址就是sdk安装目录下的库目录.所以在fedora下直接打开这个目录,加载相应的库文件.而在Ubuntu下sdk的安装目录不一致,系统的库搜索路径又没有这个库,所以执行肯定会报错.在Ubuntu下strace下这个过程,就会发现有很多open /usr/lib之类的操作.man ld,该文档中给出了共享库的系统路径和查找优先级:The linker uses the following search paths to locate requiredshared libraries:1. Any directories specified by -rpath-link options.2. Any directories specified by -rpath options. The differencebetween -rpath and -rpath-link is that directories specified by-rpath options are included in the executable and used atruntime, whereas the -rpath-link option is only effective atlink time. Searching -rpath in this way is only supported bynative linkers and cross linkers which have been configuredwith the --with-sysroot option.3. On an ELF system, for native linkers, if the -rpath and-rpath-link options were not used, search the contents of theenvironment variable "LD_RUN_PATH".4. On SunOS, if the -rpath option was not used, search anydirectories specified using -L options.5. For a native linker, the search the contents of the environmentvariable "LD_LIBRARY_PATH".6. For a native ELF linker, the directories in "DT_RUNPATH" or"DT_RPATH" of a shared library are searched for sharedlibraries needed by it. The "DT_RPATH" entries are ignored if"DT_RUNPATH" entries exist.7. The default directories, normally /lib and /usr/lib.8. For a native linker on an ELF system, if the file/etc/ld.so.conf exists, the list of directories found in thatfile.If the required shared library is not found, the linker will issuea warning and continue with the link.所以,如果要想在ubuntu下运行fedora下编译的qvfb,可以在/usr/lib下做一下qt库的链接,将其指向qtsdk安装目录的库目录下的库.这样,就可以运行了.其实在嵌入式qt开发中也是这样的:所有的动态库我们都放在/lib下,这样应用程序就都可以找到库了。相关阅读:关于Ubuntu添加共享库路径 http://www.linuxidc.com/Linux/2011-10/45745.htm在CentOS上安装vSphere CLI 5.1Ubuntu下Python版本更新问题相关资讯 Linux基础学习 Linux 路径
- Linux 系统添加操作记录审计 (01/29/2013 16:40:23)
- 如何学习Linux系统命令和工具 (01/03/2013 13:24:48)
- Linux/Unix下pid文件作用浅析 (12/27/2012 12:03:42)
| - Linux基础学习:文件的隐藏属性 (01/18/2013 16:28:25)
- Linux-x86_64 Error: 28: No space (12/27/2012 18:41:19)
- Linux环境变量的备份与恢复 (12/25/2012 19:14:57)
|
本文评论 查看全部评论 (0)