linux动态可执行文件,linux – 将动态链接的可执行文件与ld链接

我正在尝试创建一个没有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

创建可执行文件,file命令和ldd命令显示正确的输出…

然而,当我在调用printf之后启动程序时,我得到了一个分段错误…我用objdump检查了可执行文件,我认为问题是关于dtors …似乎编译:

$gcc -o simple simple.c

一个部分.dtors存在,而它不存在于直接用ld创建的可执行文件中:(

有任何想法吗?

解决方法:

失Go – 进入主力.主要不是你的切入点,_start是.试试这个:

$gcc -c hello.c

$ld -o hello -dynamic-linker /lib/ld-linux.so.2 /usr/lib/crt1.o /usr/lib/crti.o hello.o -lc /usr/lib/crtn.o

$./hello

hello, world

$

标签:linux,linker,ld

来源: https://codeday.me/bug/20190723/1516281.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值