zoukankan      html  css  js  c++  java
  • 文件空间变大的一个特例

    文件空间变大的一个特例

     

    转载时请注明出处:http://blog.csdn.net/absurd

     

    最近写一个通过汉字得到拼音的函数库,发现编译成静态库(.a)文件大小为300K,编译成共享库文件陡增到500K。这让我莫名其妙,开始以为是调试信息引起的,但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*

    这下我明白了:数据里使用了很多小字符串,每个字符串都有一个定重位符号,累积起来的就大了。要减小空间占用量,有两个方法,编译成静态库,或者把小字符串合并起来,通过偏移量访问。

     

     

     

     
  • 相关阅读:
    被@ResponseBoby注释的方法在拦截器的posthandle方法中设置cookie失效的问题
    python之异常处理
    python之url编码
    python之发送邮件
    python之使用request模块发送post和get请求
    python之小技巧积累
    python之sys.argv[]
    python之MD5加密
    python之os、sys和random模块
    python之time和datetime的常用方法
  • 原文地址:https://www.cnblogs.com/zhangyunlin/p/6167844.html
Copyright © 2011-2022 走看看