当前位置: 技术问答>linux和unix
求教Linux中动态库(或共享库, *.so文件)的三个小问题
来源: 互联网 发布时间:2015-07-13
本文导语: 1. 如何查看so文件的导出信息(包括导出函数和C++导出类)? 2. 能否合并两个不冲突的so文件?如果能,应该怎么进行? 3. 自己生成的so文件,在make install后,安装到了/usr/local/lib中,这时编译一个调用so的程序(如t...
1. 如何查看so文件的导出信息(包括导出函数和C++导出类)?
2. 能否合并两个不冲突的so文件?如果能,应该怎么进行?
3. 自己生成的so文件,在make install后,安装到了/usr/local/lib中,这时编译一个调用so的程序(如testmylib),link时用了-L路径参数,成功。但是一运行testmylib,就会提示找不着mylib??? 这时候除非我设置环境变量(增加路径信息),或者将so文件全部复制到/usr/lib中,才能正常运行。
请问,为什么link时能成,但运行就不行了?
请指教,谢谢!
2. 能否合并两个不冲突的so文件?如果能,应该怎么进行?
3. 自己生成的so文件,在make install后,安装到了/usr/local/lib中,这时编译一个调用so的程序(如testmylib),link时用了-L路径参数,成功。但是一运行testmylib,就会提示找不着mylib??? 这时候除非我设置环境变量(增加路径信息),或者将so文件全部复制到/usr/lib中,才能正常运行。
请问,为什么link时能成,但运行就不行了?
请指教,谢谢!
|
http://www.linux.com/howtos/Program-Library-HOWTO/shared-libraries.shtml
|
1.用用objdump工具。gcc带的。
2。不清楚
3。要设置一下LD_LIBRARY_PATH吧。
2。不清楚
3。要设置一下LD_LIBRARY_PATH吧。
|
1. nm也可以查看
2. 好像是不行的!
3. 编译连接的时候指明,只是在编译时起作用,运行时要另外指明的。设LD_LIBRARY_PATH就好了。
2. 好像是不行的!
3. 编译连接的时候指明,只是在编译时起作用,运行时要另外指明的。设LD_LIBRARY_PATH就好了。
|
http://www.csdn.net/Develop/read_article.asp?id=23194
也许有用,不妨看看
也许有用,不妨看看
|
3:使用-ld命令把你的库加载到系统自动寻找库文件的cache文件里面