windows下的dll文件和linux下的.so文件
来源:互联网 发布:有hao123软件 编辑:程序博客网 时间:2024/05/22 10:27
转自:http://blog.sina.com.cn/s/blog_66e717d70100h9mi.html
在开发上来说,是有一点区别的。
.so文件没有入口函数的概念。而dll却有,虽然不是必须。.so会导出所有在头文件中定义的符号。而dll却需要使用特殊关键字指名应该导出那些。
.so文件是elf格式的,可以不连接某些静态库,而等应用程序去连接。而dll需要连接静态库。
动态链接,在可执行文件装载时或运行时,由操作系统的装载程序加载库。大多数操作系统将解析外部引用(比如库)作为加载过程的一部分。在这些系统上,可执 行文件包含一个叫做import directory的表,该表的每一项包含一个库的名字。根据表中记录的名字,装载程序在硬盘上搜索需要的库,然后将其加载到内存中预先不确定的位置,之 后根据加载库后确定的库的地址更新可执行程序。可执行程序根据更新后的库信息调用库中的函数或引用库中的数据。这种类型的动态加载成为装载时加载 ,被包括Windows和Linux的大多数系统采用。装载程序在加载应用软件时要完成的最复杂的工作之一就是加载时链接。
其他操作系统可能在运行时解析引用。在这些系统上,可执行程序调用操作系统API,将库的名字,函数在库中的编号和函数参数一同传递。操作系统负责立即解 析然后代表应用调用合适的函数。这种动态链接叫做运行时链接 。因为每个调用都会有系统开销,运行时链接要慢得多,对应用的性能有负面影响。现代操作系统已经很少使用运行时链接。
可以动态链接的库,在Windows上是dynamic link library (DLL),在UNIX或Linux上是Shared Library。库文件是预先编译链接好的可执行文件,存储在计算机的硬盘上。大多数情况下,同一时间多个应用可以使用一个库的同一份拷贝,操作系统不需 要加载这个库的多个实例。
Windows 和 Linux 的加载时链接是由操作系统来完成的,格式在不同的系统下有不同的区别,但是原理还是一样的,LZ不必在这个问题上深究。
- windows下的dll文件和linux下的.so文件
- windows下查看.dll文件和Linux查看.so文件中函数的实际名称
- linux下的.so和.a文件
- Linux下的动态链接库(DLL) - so文件
- linux下的.so文件
- Windows下的lib文件和dll文件
- linux下的.a和.so,对比windows下的lib和dll
- linux下的.a和.so,对比windows下的lib和dll
- Linux的.a、.so和.o文件以及与windows下的对应关系
- window的动态库是.dll文件,而Linux下的动态库是.so文件
- Linux下so文件的生成和使用
- 关于linux下.so文件的认识
- Linux下的 .o、.a、.so文件
- Linux下的动态库so文件
- Linux下的 .o、.a、.so文件
- Linux下的 .o、.a、.so文件
- Linux下找不到so文件的解决办法
- Linux下找不到so文件的解决办法
- poj1125 - Stockbroker Grapevine
- 字符驱动设计----mini2440LED驱动设计之路
- Android上dip、dp、px、sp等单位说明
- Linux设备模型(中)之上层容器 (转)
- 常见设计模式之【适配器模式】
- windows下的dll文件和linux下的.so文件
- maven 配置
- Android 报错 - 无法解析类型 java.lang.Object。从必需的 .class 文件间接引用了它
- 动态数据类型 笔记
- android学习之一 工程目录认识
- socket编程:SO_REUSEADDR例解
- 小满的博客cocos2d-x
- Qt 类简介之 Qt QApplication 类
- 【系统运维】单线程和多线程的几个疑问与解答。