2013年1月28日

cygwin下dll和lib的生成方法

摘要: 该文中只能在cygwin环境中运行gcc命令,在linux操作系统中执行gcc命令效果不同。cygwin中生成的动态链接库(.dll)和可执行文件(.exe)均为PE文件格式; linux操作系统生成的动态链接库(.so)和可执行文件()为ELF文件格式dll动态链接库lib静态链接库cygwin可以编译生成windows下供调用的dll,包括vc可识别的lib。Cygwin-GCC : Cygwin自带了一个GCC, 用于把C/C++-Source编译成Cygwin平台下的EXE/DLL (使用Cygwin必须用其自带的GCC, 因为内部会生成一些针对于平台的特定的初始化代码, 如果用其余版 阅读全文

posted @ 2013-01-28 18:09 善敗將軍 阅读(2033) 评论(0) 推荐(0) 编辑

基于MSYS的Win32动态链接库DLL开发

摘要: 1、介绍动态链接库,是一个很古老,但又很常用的技术。在我们平时的代码编译中,通常是将静态库链接到程序中,最终静态库成为程序二进制的一部分而融合成一体,但是,这样的静态链接面临的一个问题就是,如果一个软件的各个部分是通过协商好接口,由不同的小组所编写的,那么如何能够让每一个小组独立的维护自己所属的部分,而不用重新编译其他人所开发的代码,动态链接库由此而生。动态链接库,可以让每一个人维护的部分以独立的库的形式存在而不用与应用程序融为一体,也就是dll文件,应用程序调用其中的函数时,需要动态的加载和链接其中的函数,然后可以正常的与静态链接一样的进行操作。实际上在后来的动态链接应用技术的发展之中,许多 阅读全文

posted @ 2013-01-28 18:04 善敗將軍 阅读(695) 评论(0) 推荐(0) 编辑

java nio(reactor, selector, selectionKey)

摘要: SocketChannel vs. ServerSocketChannel父类:SelectableChannel。Channel表现了一个可以进行IO操作的通道(比如,通过FileChannel,我们可以对文件进行读写操作)ServerSocketChannel主要用在Server中,用于接收客户端的链接请求SocketChannel则用于真正的读写数据,同时还可以用于客户端发送链接请求。真正实现读写数据操作的就是这些SocketChannel,上面的ServerSocketChannel只是负责接收连接请求。以下均简称为channelchannel vs. Selectorchannel需 阅读全文

posted @ 2013-01-28 17:32 善敗將軍 阅读(1127) 评论(0) 推荐(0) 编辑

ELF文件格式

摘要: elf文件格式学习总结 编译器将一个源文件生成目标文件时,会在目标文件中生成符号表 和重定位表 。 符号表包含在文件中定义的全局符号 以及在文件中引用的外部符号 (外部函数或变量)。 重定位表告诉链接器在哪些位置要进行重定位操作。 编译器生成的目标文件在文件的 编译器将一个源文件生成目标文件时,会在目标文件中生成符号表和重定位表。符号表包含在文件中定义的全局符号以及在文件中引用的外部符号(外部函数或变量)。重定位表告诉链接器在哪些位置要进行重定位操作。编译器生成的目标文件在文件的开始处会有一个elf头,描绘了整个文件的组织结构。它还包括很多节(section)。这... 阅读全文

posted @ 2013-01-28 17:31 善敗將軍 阅读(387) 评论(0) 推荐(0) 编辑

gcc命令生成静态库和动态库

摘要: 一、基本概念1.1什么是库在windows 平台和linux 平台下都大量存在着库。本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。由于windows 和linux 的平台不同(主要是编译器、汇编器和连接器的不同),因此二者库的二进制是不兼容的。本文仅限于介绍linux 下的库。1.2库的种类linux 下的库有两种:静态库和共享库(动态库)。二者的不同点在于代码被载入的时刻不同。静态库的代码在编译过程中已经被载入可执行程序,因此体积较大。共享库的代码是在可执行程序运行时才载入内存的,在编译过程中仅简单的引用,因此代码体积较小。1.3库存在的意义库是别人写好的现有的,成熟 阅读全文

posted @ 2013-01-28 17:27 善敗將軍 阅读(689) 评论(0) 推荐(0) 编辑

gcc命令

摘要: gcc所遵循的部分约定规则:.c为后缀的文件,C语言源代码文件;.a为后缀的文件,是由目标文件构成的档案库文件;.C,.cc或.cxx 为后缀的文件,是C++源代码文件且必须要经过预处理;.h为后缀的文件,是程序所包含的头文件;.i 为后缀的文件,是C源代码文件且不应该对其执行预处理;.ii为后缀的文件,是C++源代码文件且不应该对其执行预处理;.m为后缀的文件,是Objective-C源代码文件;.o为后缀的文件,是编译后的目标文件;.s为后缀的文件,是汇编语言源代码文件;.S为后缀的文件,是经过预编译的汇编语言源代码文件。在使用Gcc编译器的时候,我们必须给出一系列必要的调用参数和文件名称 阅读全文

posted @ 2013-01-28 14:11 善敗將軍 阅读(161) 评论(0) 推荐(0) 编辑

vi二进制

摘要: 通常来说文件分为文本和二进制文件两大类,文本文件的编辑很容易,Windows下的notepad、UltraEdit都很好用,二进制文件的编辑在Windows下也有很多工具,UltraEdit也不错,但是Linux下呢?今天终于发现了一个好方法,但是最终出处找不到了。首先创建一个二进制文件:?123[oracle@logserver tmp]$ echo-n "ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz"> test.bin [oracle@logserver tmp]$ cattest.bin ABCDE 阅读全文

posted @ 2013-01-28 13:59 善敗將軍 阅读(295) 评论(0) 推荐(0) 编辑

导航