【发布时间】:2016-10-20 06:51:31
【问题描述】:
我正在尝试在 Linux(64 位)上在链接时将二进制文件 B 嵌入到可执行文件 A 中。
B 是一个简单的文本文件...
Hi, I'm a text file in plain ASCII.
...变成带有ld -r -bbinary -oB.o B 的可重定位对象。它的symtab 报告了三个全局变量,它们的名称非常不言自明:
_binary_B_start_binary_B_end_binary_B_size
这是A.c...
#include <stdio.h>
extern const size_t _binary_B_size;
int main(int argc, char * * argv)
{
printf("size: %zu\n", _binary_B_size);
return 0;
}
...编译和链接B.o:gcc -oA A.c B.o。
不幸的是,一旦可执行文件A 尝试访问_binary_B_size,它就会突然被SIGSEGV 终止。
我做错了什么?
【问题讨论】: