linux 调用动态库 so 文件 分类: c++那些事2012-05-02 14:55 4831 人阅读 评论(0) 收藏 举报 linuxdlliostreamclass 编译器winapi 关于动态调用动态库方法说明 一、 动态库概述 1、 动态库的概念 日常编程中,常有一些函数不需要进行编译或者可以在多个文件中使用(如数据库输入/输出操作或屏幕控制等标准任务函数)
可以事先对这些函数进行编译,然后将它们放置在一些特殊的目标代码文件中,这些目标代码文件就称为库
库文件中的函数可以通过连接程序与应用程序进行链接,这样就不必在每次开发程序时都对这些通用的函数进行编译了
动态库是一种在已经编译完毕的程序开始启动运行时,才被加载来调用其中函数的库
其加载方式与静态库截然不同
2、 动态库的命名 Linux下,动态库通常以
so(share object)结尾
(通常/lib 和/usr/lib 等目录下存在大量系统提供的以
so 结尾的动态库文件) Windows 下,动态库常以
dll 结尾
(通常 C:\windows\System32 等目录下存在大量系统提供的以
dll 结尾的动态库文件) 3、 动态库与静态库之间的区别 静态库是指编译连接时,把库文件的代码全部加入到可执行文件中,所以生成的文件较大,但运行时,就不再需要库文件了
即,程序与静态库编译链接后,即使删除静态库文件,程序也可正常执行
动态库正好相反,在编译链接时,没有把库文件的代码加入到可执行文件中,所以生成的文件较小,但运行时,仍需要加载库文件
即,程序只在执行启动时才加载动态库,如果删除动态库文件,程序将会因为无法读取动态库而产生异常
二、 Linux下动态调用动态库 备注:以下 linux实例说明都是在 RedHat 5
1 系统+ gcc 版本 4
2 20080704 (Red Hat