文件空间变大的一个特例
转载时请注明出处:http://blog.csdn.net/absurd
最近写一个通过汉字得到拼音的函数库,发现编译成静态库(.a)文件大小为300多K,编译成共享库文件陡增到500多K。这让我莫名其妙,开始以为是调试信息引起的,但strip之后没有多大变化。
用objdump看了一下:
[root@localhost pinyin]# objdump -h libpinyin.so
5 .rel.dyn 00036840 000003cc 000003cc 000003cc 2**2
11 .rodata 000527b3 00036e00 00036e00 00036e00 2**5
重定位符号竟占了223296(0x00036840)字节,再查看定位符号:
[root@localhost pinyin]# objdump -R libpinyin.so
libpinyin.so: file format elf32-i386
DYNAMIC RELOCATION RECORDS
OFFSET TYPE VALUE
00036d30 R_386_RELATIVE *ABS*
00036d37 R_386_RELATIVE *ABS*
00036d3c R_386_RELATIVE *ABS*
00036d6a R_386_RELATIVE *ABS*
0006e1a0 R_386_RELATIVE *ABS*
0006e1a4 R_386_RELATIVE *ABS*
0006e1a8 R_386_RELATIVE *ABS*
0006e1ac R_386_RELATIVE *ABS*
0006e1b0 R_386_RELATIVE *ABS*
0006e1b4 R_386_RELATIVE *ABS*
0006e1b8 R_386_RELATIVE *ABS*
…
这下我明白了:数据里使用了很多小字符串,每个字符串都有一个定重位符号,累积起来的就大了。要减小空间占用量,有两个方法,编译成静态库,或者把小字符串合并起来,通过偏移量访问。
分享到:
相关推荐
地理和时间加权回归(GTWR)是一种能同时解释空间和时间非平稳性的局部线性回归模型。...如果是面板数据,则将所有横截面中的记录合并到一个文件中。每个记录应该有三个字段,分别表示X坐标、Y坐标和时间戳。
要求得七参数就需要在一个地区需要3个以上的已知点,如果区域范围不大,最远点间的距离不大于30Km(经验值),这可以用三参数,即X平移,Y平移,Z平移,而将X旋转,Y旋转,Z旋转,尺度变化K视为0,所以三参数只是七...
要求得七参数就需要在一个地区需要3个以上的已知点,如果区域范围不大,最远点间的距离不大于30Km(经验值),这可以用三参数,即X平移,Y平移,Z平移,而将X旋转,Y旋转,Z旋转,尺度变化K视为0,所以三参数只是七...
5.4. 变长数组和 alloca() 5.5. 友元 5.6. 异常 5.7. 运行时类型识别 5.8. 类型转换 5.9. 流 5.10. 前置自增和自减 5.11. const 的使用 5.12. 整型 5.13. 64 位下的可移植性 5.14. 预处理宏 5.15. 0 和 ...
详细讨论了Oracle数据库的创建、从OEM到Grid Control、Oracle的字符集、用户的创建与管理、表空间和数据文件、自动存储管理(ASM)、临时表空间和临时文件、备份与恢复、备份方案与特例恢复、Oracle的闪回特性、Oracle...
详细讨论了oracle数据库的创建、从oem到grid control、oracle的字符集、用户的创建与管理、表空间和数据文件、自动存储管理(asm)、临时表空间和临时文件、备份与恢复、备份方案与特例恢复、oracle的闪回特性、oracle...
二值图像可以看成是灰度图像的一个特例。 3) 索引图像: 索引图像的文件结构比较复杂,除了存放图像的二维矩阵外,还包括一个称之为颜色索引矩阵MAP的二维数组。MAP的大小由存放图像的矩阵元素值域决定,如矩阵元素...
1.介绍一下STL,详细说明STL如何实现vector。 Answer: STL (标准模版库,Standard ...MVC模式是observer 模式的一个特例,典型的有MFC里面的文档视图架构。 18,多重继承如何消除向上继承的二义性。 使用虚拟继承即可.
面向对象方法中的对象,是系统中用来描述客观事物的一个实体,它是用来构成系统的一个基本单位,由一组属性和一组行为构成。 面向对象的方法将数据及对数据的操作方法放在一起,作为一个相互依存、不可分离的整体--...
12.9 带一个参数的构造函数:特例 12.10 静态类成员 12.11 何时执行构造函数和析构函数 12.12 作用域分辨符 12.13 嵌套类 12.14 局部类 12.15 向函数传递对象 12.16 返回对象 12.17 对象赋值 第13章 数组、指针、...
[\b] 一个退格直接量(特例) ________________________________________________________________ 3.复制 用以上的正则表式的语法,可以把两位数描述成 / \ d \ d /,把四位数描述成 / \d \ d \ d \ d /.但我们还...
语义词典的生产线生产线是用于创建一组工具。 当前,它包含几个组件: 使用作为后端的。 它是用于管理工作空间(用于编辑术语语义词典的事务)... 使用gen_env.sh实用程序生成一个变量文件。 实用程序需要一个具有local
1.1 编写一个简单的C++程序 2 1.1.1 编译、运行程序 3 1.2 初识输入输出 5 1.3 注释简介 8 1.4 控制流 10 1.4.1 while语句 10 1.4.2 for语句 11 1.4.3 读取数量不定的输入数据 13 1.4.4 if语句 15...
1.1 编写一个简单的C++程序 2 1.1.1 编译、运行程序 3 1.2 初识输入输出 5 1.3 注释简介 8 1.4 控制流 10 1.4.1 while语句 10 1.4.2 for语句 11 1.4.3 读取数量不定的输入数据 13 1.4.4 if语句 15...
Marc Farley的这本书从各个集成组件出发,为读者理解和评价存储网络提供了一个综合指导。 存储的传统、趋势及未来 传统的存储和管理方法主要强调限制花费和信息的访问。因此,使用传统的存储管理原则,信息存储...
这一章是对1 0 年前知识的一个回 顾,它们如今已经沉寂在历史中, 或是被Windows 掩盖。但是, 作 为喜爱创根l河底的程序员,我们有 必要对Window s 之前的时代有一 些了解。 XIV 3.1 C 语言..........................