存储类别五种类别:自动,寄存器,具有代码块作用域的静态,具有外部链接的静态,具有内部链接的静态。链接:外部链接:文件作用域的变量。内部链接:static修饰的具有文件作用域的变量有内部链接),空链接:具有代码块作用域或者函数原型作用域的变量具有空链接局部变量:函数内定义,函数内可见; 全局变量(.....
分类:
其他好文 时间:
2014-09-30 12:16:49
阅读次数:
363
静态链接虽然解决了一下问题 但是仍旧有很多缺点。比如浪费内存和磁盘空间,模块更新也比较困难。最主要的是 我们正常一个c语言程序 要使用诸如printf strlen 等等之类c语言库的代码。一个c语言程序要使用1mb的内存来使用它。如果有100个程序的话 就是100mb的内存。这是无法忍受的。因为内...
分类:
其他好文 时间:
2014-09-29 14:17:00
阅读次数:
208
静态连接库就是把(lib)文件中用到的函数代码直接链接进目标程序,程序运行的时候不再需要其它的库文件;动态链接就是把调用的函数所在文件模块(DLL)和调用函数在文件中的位置等信息链接进目标程序,程序运行的时候再从DLL中寻找相应函数代码,因此需要相应DLL文件的支持。静态链接库与动态链接库都是共享代...
分类:
其他好文 时间:
2014-09-21 13:10:30
阅读次数:
201
首先介绍一下静态库(静态链接库)、动态库(动态链接库)的概念,首先两者都是代码共享的方式。静态库:在链接步骤中,连接器将从库文件取得所需的代码,复制到生成的可执行文件中,这种库称为静态库,其特点是可执行文件中包含了库代码的一份完整拷贝;缺点就是被多次使用就会有多份冗余拷贝。即静态库中的指令都全部被直...
分类:
其他好文 时间:
2014-09-20 11:03:07
阅读次数:
183
Linux下ELF文件类型分为以下几种: 1、可重定位文件,例如SimpleSection.o; 2、可执行文件,例如/bin/bash; 3、共享目标文件,例如/lib/libc.so。 在Linux 可重定位文件 ELF结构一文中,我们已经分析了可重定位文件ELF结构。本文分析可执行文件的ELF结构。 首先附上源代码:#include
int main()
{...
分类:
系统相关 时间:
2014-09-18 14:50:44
阅读次数:
356
静态库的链接基本上同链接目标文件.obj/.o相同,但也有些不同的地方。本文简要描述linux下静态库在链接过程中的一些细节。
静态库文件格式
静态库远远不同于动态库,不涉及到符号重定位之类的问题。静态库本质上只是将一堆目标文件进行打包而已。静态库没有标准,不同的linux下都会有些细微的差别。大致的格式wiki上描述的较清楚:
Global header
-----------------...
分类:
其他好文 时间:
2014-09-15 22:50:59
阅读次数:
351
1. 要不要学习汇编可以只懂一点,工作中基本不用,一旦用就是出了大问题ldr : load 读内存ldr r0, [r1]: r1里存放的是地址值, 去这个地址读取4字节的内容,存入r0str : stroe 写内存str r0, [r1]: r1里存放的是地址值, 把r0里的4字节数据存入这个地址...
分类:
其他好文 时间:
2014-09-15 14:16:18
阅读次数:
189
1>------已启动生成:项目:MFCApplication1,配置:DebugWin32------1>uafxcwd.lib(afxctrlcontainer2.obj):errorLNK2005:"void__cdeclAfxRegisterMFCCtrlClasses(void)"(?Af...
分类:
其他好文 时间:
2014-09-13 02:59:24
阅读次数:
228
大家可能经常使用gcc -static ***.c,那么这个静态链接究竟使用了什么命令,又链接了哪些库呢? 我们首先来分析libc.a是个什么文件。我们已经知道了xxx.so是动态链接库,xxx.o是静态链接库或者说可重定位文件,/bin/bash为可执行文件。 libc.a其实是很多可重定位文件的集合,而且每个可重定位文件中一般都只写一个函数。例如printf.o只有printf一个...
分类:
其他好文 时间:
2014-09-10 17:45:40
阅读次数:
236
静态链接大家并不陌生,本文将从二进制代码来分析静态链接的本质。 首先列出将要静态的链接的两个源文件,它们分别是a.c和b.c,最后链接成功的文件为ab。 a.c代码如下:extern int shared;
extern void swap(int * ,int *);
int main(){
int a = 100;
swap( &a, &shared );
} b.c代...
分类:
其他好文 时间:
2014-09-10 10:55:50
阅读次数:
254