我正在尝试创建一个动态链接的可执行文件(elf_i386),但不使用gcc。该程序非常简单(仅包含一个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
可执行文件已创建,file命令和ldd命令也显示了正确的输出...然而,在调用printf后启动程序时,我收到了一个“分段错误”的错误提示...我使用objdump检查了可执行文件,我认为问题出在dtors上...似乎是编译时出了问题:
$gcc -o simple simple.c
在直接使用ld创建的可执行文件中,不存在一个名为.dtors的部分,而在其他情况下存在。
有什么想法吗?