【问题标题】: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 段。