深入分析Windows和Linux动态库应用异同
摘要:动态链接库技术实现和设计程序常用的技术,在Windows和Linux系统中都有动态库的概念,采用动态库可以有效的减少程序大小,节省空间,提高效率,增加程序的可扩展性,便于模块化管理。
但不同操作系统的动态库由于格式 不同,在需要不同操作系统调用时需要进行动态库程序移植。本文分析和比较了两种操作系统动态库技术,并给出了将Visual C++编制的动态库移植到Linux上的方法和经验。
1、引言
动态库(Dynamic Link Library abbr,DLL)技术是程序设计中经常采用的技术。其目的减少程序的大小,节省空间,提高效率,具有很高的灵活性。
采用动态库技术对于升级软件版本更加容易。与静态库(Static Link Library)不同,动态库里面的函数不是执行程序本身的一部分,而是根据执行需要按需载入,其执行代码可以同时在多个程序中共享。
在Windows和Linux操作系统中,都可采用这种方式进行软件设计,但他们的调用方式以及程序编制方式不尽相同。本文首先分析了在这两种操作系统中通常采用的动态库调用方法以及程序编制方式,然后分析比较了这两种方式的不同之处,最后根据实际移植程序经验,介绍了将VC++编制的Windows动态库移植到Linux下的方法。
2、动态库技术
2.1 Windows动态库技术
动态链接库是实现Windows应用程序共享资源、节省内存空间、提高使用效率的一个重要技术手段。常见的动态库包含外部函数和资源,也有一些动态库只包含资源,如Windows字体资源文件,称之为资源动态链接库。通常动态库以.dll,.drv、.fon等作为后缀。
相应的windows静态库通常以.lib结尾,Windows自己就将一些主要的系统功能以动态库模块的形式实现。
Windows动态库在运行时被系统加载到进程的虚拟空间中,使用从调用进程的虚拟地址空间分配的内存,成为调用进程的一部分。DLL也只能被该进程的线程所访问。DLL的句柄可以被调用进程使用;调用进程的句柄可以被DLL使用。
DLL模块中包含各种导出函数,用于向外界提供服务。DLL可以有自己的数据段,但没有自己的堆栈,使用与调用它的应用程序相同的堆栈模式;一个DLL在内存中只有一个实例;DLL实现了代码封装性;DLL的编制与具体的编程语言及编译器无关,可以通过DLL来实现混合语言编程。DLL函数中的代码所创建的任何对象(包括变量)都归调用它的线程或进程所有。
根据调用方式的不同,对动态库的调用可分为静态调用方式和动态调用方式。
(1)静态调用,也称为隐式调用,由编译系统完成对DLL的加载和应用程序结束时DLL卸
相关文档:
1.变更用户: su root 或 su - 注意(若只用su,则只换用户,不换shell)。
2.创建文件夹: mkdir -m777 tool 创建too并设置权限 mkdir -p tool2/tool3 连级创建文件夹。
3.删除文件或文件夹: rm -r tool2 递归删除,连同子目录一起删除。 rm -fr 不用提示,直接强制递归删除。
4.移动目录: mv -iv ......
USB是大家常见的,设备总线。 这个USB分为两个部分:主机,设备。 他是一个树形的关系: 主机
设备 设备 设备 主机里装的是,主机控制器,设备中装的是设备控制器 Host Controller ......
Linux设备模型之tty驱动架构分析
来源: ChinaUnix博客 日期: 2008.07.25 16:24 (共有0条评论) 我要评论
------------------------------------------
本文系本站原创,欢迎转载!
转载请注明出处:http://ericxiao.cublog.cn/
------------------------------------------
一:前言
Tty这个名称 ......
一、前言
Linux 上有好不少软件能够搭建 FTP,例如 vsftpd、glftpd、proftpd 等。
vsftpd 是和 Linux 系统上用户管理一样的。所有的用户管理都是在现有宿主系统上的用户以及组管理相同。文件权限上的管理也是和 Linux 一模一样。在搭建上比较快,简单方便。
......