【发布时间】:2011-04-28 15:38:52
【问题描述】:
我正在尝试创建一个没有 gcc 的动态链接可执行文件 (elf_i386)。该程序非常简单(只有一个 printf)...这里的命令:
$ gcc -c simple.c
$ ld -o simple -dynamic-linker /lib/ld-linux.so.2 --entry main /usr/lib/crt1.o /usr/lib/crti.o simple.o -lc /usr/lib/crtn.o
可执行文件已创建,文件命令和 ldd 命令也显示正确的输出... 但是,当我在调用 printf 后启动程序时出现分段错误...我已经使用 objdump 检查了可执行文件,我认为问题出在 dtors 上...似乎编译为:
$gcc -o simple simple.c
一个 .dtors 节存在,而它不存在于直接使用 ld 创建的可执行文件中:(
有什么想法吗?
【问题讨论】:
-
如果您需要任何人的帮助,您需要出示您的代码。