【问题标题】:create a linux binary (executable) that contains const data only创建一个仅包含 const 数据的 linux 二进制文件(可执行文件)
【发布时间】:2020-04-07 01:18:40
【问题描述】:

在使用任何计算机脚本/语言的 Linux 上,有没有办法创建/生成二进制文件(可执行文件),它只有 const 数据而没有任何函数/main()?例如,我们有以下结构(C 格式),二进制文件将只有以下 const 数据:

const struct {
    uint32_t mag;
    uint16_t ver;
    uint16_t par_no;
    uint32_t level;
} foo = {1, 2, 3, 0};

【问题讨论】:

    标签: linux scripting binary executable


    【解决方案1】:

    是的,很容易:

    $ cat foo.c
    #include <stdint.h>
    const struct {
        uint32_t mag;
        uint16_t ver;
        uint16_t par_no;
        uint32_t level;
    } foo = {1, 2, 3, 0};
    
    $ gcc foo.c -c -o foo.o
    
    $ ld foo.o -o foo
    ld: warning: cannot find entry symbol _start; defaulting to 0000000000401000
    

    (警告不是致命的)。

    生成的可执行文件有一个 12 字节的 .rodata 段,但没有 .text 段。

    【讨论】:

      猜你喜欢
      • 2013-08-26
      • 2015-07-20
      • 2019-01-17
      • 2011-10-22
      • 2020-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多