• strip 命令的使用方法


    用途

    通过除去绑定程序和符号调试程序使用的信息,降低扩展公共对象文件格式(XCOFF)的对象文件的大小。

    语法

    strip [ -V ] [ -r [ -l ] | -x [ -l ] | -t | -H | -e | -E ] [ -X {32 |64 |32_64 }] [ -- ] File ...

    描写叙述

    strip 命令降低 XCOFF 对象文件的大小。strip 命令从 XCOFF 对象文件里有选择地除去行号信息、重定位信息、调试段、typchk 段、凝视段、文件头以及全部或部分符号表。 一旦您使用该命令,则非常难调试文件的符号;因此,通常应该仅仅在已经调试和測试过的生成模块上使用 strip 命令。使用 strip 命令降低对象文件所需的存储量开销。

    对于每一个对象模块,strip 命令除去给出的选项所指定的信息。对于每一个归档文件,strip 命令从归档中除去全局符号表。

    能够使用 ar -s 命令将除去的符号表恢复到归档文件或库文件里。

    没有选项的 strip 命令除去行号信息、重定位信息、符号表、调试段、typchk 段和凝视段。

    标志

    -e 在对象文件的可选头中设置 F_LOADONLY 标志。假设对象文件放置在归档中,则该标志告知绑定程序(ld 命令),在与此归档链接时应忽略该对象文件里的符号。
    -E 复位(关闭)对象文件的可选头中的 F_LOADONLY 位。(请參阅 -e 标志。)
    -H 除去对象文件头、不论什么可选的头以及全部段的头部分。
    注: 不除去符号表信息。
    -l (小写 L)从对象文件里除去行号信息。

     

    -r 除了外部符号和静态符号条目,将所有符号表信息除去。不除去重定位信息。同一时候除去调试段和 typchk 段。这个选项产生一个对象文件,该对象文件仍能够用作输入到链接编辑器(ld 命令)中。
    -t 除去大多数符号表信息,但并不除去函数符号或行号信息。
    -V 打印 strip 命令的版本。
    -x 除去符号表信息,但并不除去静态或外部符号信息。 -x 标志同一时候除去重定位信息,因此将不可能链接到该文件。
    -X mode 指定应检查 strip 的对象文件的类型。 mode 必须是下列之中的一个:
    32
    仅仅处理 32 位对象文件
    64
    仅仅处理 64 位对象文件
    32_64
    既处理 32 位对象文件,又处理 64 位对象文件

    缺省值是处理 32 位对象文件(忽略 64 位对象文件)。也能够用 OBJECT_MODE 环境变量来设置 mode 。比如,OBJECT_MODE=64 使 strip 处理不论什么 64 位对象文件,并忽略 32 位对象文件。-X 标志重设 OBJECT_MODE 变量。

    -- (双连字符)将尾随在该标志后的全部參数解释为文件名称。这就同意除去名称是以连字符開始的文件。

    退出状态

    该命令返回下面退出值:

    0 成功完毕。
    >0 出错。

    演示样例

    1. 要除去 a.out 文件里的符号表和行号信息,请输入:
      strip a.out
    2. 要除去 a.out 文件里的对象文件头,请输入:
      strip -H a.out
    3. 要除去 lib.a 中的 32 位和 64 位符号表,请输入:
      strip -X 32-64 lib.a

    文件

    /usr/ccs/bin/strip 包括 strip 命令。

    ==================================================================================

    UNIX下运行文件的减肥工具 strip
    -

      UNIX下文件压缩命令compress大家都比較熟悉了,它的压缩率比較高, 和tar命令结合使用来做数据备份是最合适只是了。但compress压缩也有缺点,就是被压缩后的文件须要用命令uncompress解压后才干正常使用。而用strip命令就没有这个问题,它能清除运行文件里不必要的标示符及调试信息,可减小文件大小而不影响正常使用。但与compress 不同的是,文件一旦strip后就不能恢复原样了,所以strip是一个减肥工具而不是压缩工具。并且,被strip后的文件不包括调试信息,就不能用 dbx来调试程序了。如今让我们来详细效果怎样,看以下一个程序:
      #include
      main()
      {
      printf("hello, world/n");
      }
      用cc编译以后长度为46176字节,用strip后变为了 30648,足足减小了 1/3,并且仍然能够正常运行。除了用strip外,用共享库也是减小运行文件长度的方法。
      注:
       1.假设文件大小没有减小,那就是已经strip过了.
      2.cc 编译时加上"-s"參数,具有相同的作用。
      某种节约空间的办法:
      那就是对于单个比較大的可运行文件能够编写一个zexec脚本.以下的脚本仅仅是针对/usr/bin/cc的
       uncompress ./cc.Z
      mv cc /tmp
      cd /tmp
      ./cc

  • 相关阅读:
    ubuntu下libjson-c库的使用问题备忘
    SAX PULL解析实例
    C# 自己定义 implicit和explicit转换
    游戏行业创业分析
    【kotlin】long转化为date类型 或者date字符串
    【kotlin】报错 Only safe (?.) or non-null asserted (!!.) calls are allowed on a nullable receiver of type List<String>?
    【spring boot】注解@ApiParam @PathVariable @RequestParam三者区别
    【Mybatis】 Mybatis在xml文件中处理大于号小于号的方法【问题】
    【hql】spring data jpa中 @Query使用hql查询 问题
    【IntelliJ IDEA】2017.3.4版本永久破解
  • 原文地址:https://www.cnblogs.com/yxwkf/p/4041448.html
Copyright © 2020-2023  润新知