eclipse+cdt+gcc 程序调用动态链接库
来源:互联网 发布:微信为什么要封淘宝客 编辑:程序博客网 时间:2024/06/10 04:28
ldconfig的用法
几个需要注意的地方:
1. 往/lib和/usr/lib里面加东西,是不用修改/etc/ld.so.conf的,但是完了之后要调一下ldconfig,不然这个library会找不到
(LD_LIBRARY_PATH的解释参考上一篇博文)
http://hi.baidu.com/zsffei/blog/item/7b17c043ceb51e1772f05de1.html
如果我们的程序调用动态链接库,当在cdt中运行的时候,可以通过run-->enviroment-->添加LD_LIBRARY_PATH 环境变量来设置查找动态链接库文件的路径。但是在运行的时候,程序去那里找动态链接库呢?
方法主要有两种。一种,是设置系统的LD_LIBRARY_PATH 环境变量(在eclipse里设置对外部正式运行的程序无效)。设置的方法见附录资料三
另外一种,是将动态链接库文件的路径编译进二进制可执行文件。那么在eclipse如何进行编译呢?如下图
好了,这下我们的程序就可以脱离eclipse运行了(,找了好久啊)。注意,不要设置错误了,是g++linker的miscellaneous。
第二种方法的缺点是,库的地址就不能变动了(在游戏等应用程序中用这种方法教好)。第一种方法的优点是通过更改LD_LIBRARY_PATH的值,可以变动库文件的地址。它的缺点当然就是还要改动环境变量的值了。
---------------------------------------------------------可爱的分割线----------------------------------------------------------
(一)http://linux.chinaunix.net/bbs/archiver/?tid-974839.html
linux 动态库
[b]Linux[/b][b]下动态库使用小结[/b]
. 静态库和动态库的基本概念
静 态库,是在可执行程序连接时就已经加入到执行码中,在物理上成为执行程序的一部分;使用静态库编译的程序运行时无需该库文件支持,哪里都可以用,但是生成
的可执行文件较大。动态库,是在可执行程序启动时加载到执行程序中,可以被多个可执行程序共享使用。使用动态库编译生成的程序相对较小,但运行时需要库文件支持,如果机器里没有这些库文件就不能运行。
2.
如何使用动态库
如何程序在连接时使用了共享库,就必
须在运行的时候能够找到共享库的位置。linux的可执行程序在执行的时候默认是先搜索/lib和/usr/lib这两个目录,然后按照 /etc/ld.so.conf里面的配置搜索绝对路径。同时,Linux也提供了环境变量LD_LIBRARY_PATH供用户选择使用,用户可以通过 设定它来查找除默认路径之外的其他路径,如查找/work/lib路径,你可以在/etc/rc.d/rc.local或其他系统启动后即可执行到的脚本
添加如下语句:LD_LIBRARY_PATH =/work/lib:$(LD_LIBRARY_PATH)。并且LD_LIBRARY_PATH路径优先于系统默认路径之前查找(详细参考《使用
LD_LIBRARY_PATH》)。
不过LD_LIBRARY_PATH的设定作用是全局的,过多的使用可能会影响到其他应用程序的运 行,所以多用在调试。(LD_LIBRARY_PATH的缺陷和使用准则,可以参考《Why
LD_LIBRARY_PATH is bad》 )。通常情况下推荐还是使用gcc的-R或-rpath选项来在编译时就指定库的查找路径,并且该库的路径信息保存在可执行文件中,运行时它会直接到该路
径查找库,避免了使用LD_LIBRARY_PATH环境变量查找。
3.库的链接时路径和运行时路径
现代连 接器在处理动态库时将链接时路径(Link-time path)和运行时路径(Run-time path)分开,用户可以通过-L指定连接时库的路径,通过-R(或-rpath)指定程序运行时库的路径,大大提高了库应用的灵活性。比如我们做嵌入式
移植时#arm-linux-gcc $(CFLAGS) –o target –L/work/lib/zlib/
-llibz-1.2.3 (work/lib/zlib下是交叉编译好的zlib库),将target编译好后我们只要把zlib库拷贝到开发板的系统默认路径下即可。或者通过- rpath(或-R )、LD_LIBRARY_PATH指定查找路径。
- eclipse+cdt+gcc 程序调用动态链接库
- Eclipse CDT生成、调用C动态库
- Eclipse CDT MinGW生成C++动态链接库及Java JNI的调用例子
- Eclipse - Windows & Eclipse & CDT & MinGW 创建动态链接库(dll)
- Eclipse+CDT+Gcc编译选项控制(动态库的生成)
- 使用Eclipse调用动态链接库程序环境设置
- gcc 动态链接库
- eclipse CDT下链接库的设置
- Ubuntu Eclipse CDT编译动态链接库文件报错recompile with -fPIC错误
- eclipse CDT gcc g++ 参数
- gcc动态链接库基本知识
- gcc动态链接库基本知识
- gcc动态链接库基本知识
- gcc编译动态链接库
- gcc 编译动态链接库
- gcc动态链接库基本知识
- Java和eclipse调用C开发动态链接库问题
- 【转载整理】eclipse 开发c/c++、Java使用JNI调用C程序、生成64位dll动态链接库
- Linux内核开发之内存与I/O访问(三)
- 基于WINSOCK控件的VC网络通讯程序
- dbms_xplan包的输出
- Perl_控制输出小数点位数_sprintf
- Linux内核开发之内存与I/O访问(四)
- eclipse+cdt+gcc 程序调用动态链接库
- Linux内核开发之内存与I/O访问(五)
- 配置Flash CS5.5支持FLASH PLAYER11 和 AIR3.0
- C#编码规范(uml.org)
- Oracle em重建方式
- 一个简单的全选Jquery插件
- Smarty的安装
- 职业社交网络BranchOut获2500万美元巨额融资 用户超2500万
- 在中国要想发财的22条秘诀!