gpt4 book ai didi

c - 与另一个启动文件链接

转载 作者:太空狗 更新时间:2023-10-29 16:08:04 25 4
gpt4 key购买 nike

我试图通过在 LD 脚本中使用 STARTUP 指令将程序与我自己的启动文件链接起来:

...
ENTRY(_start)
STARTUP(my_crt1.o)
...

GCC 驱动程序用于链接程序(不要理会 libgcc 等库路径):

gcc -T my_script.ld ...

不幸的是,它只适用于为 powerpc 目标编译的 GCC,而 arm 或 i686 目标则不能,并且仍然在 collect2 中包含 crt0.o。例如:

arm-eabi-g++ -v -T my_script.ld ...

给我:

collect2 ... /opt/lib/gcc/arm-eabi/4.8.0/../../../../arm-eabi/lib/crt0.o ...

因此:

crt0.S:101: multiple definition of `_start'

似乎 STARTUP 指令被完全忽略(除非指定 STARTUP 指令,否则 powerpc 目标也使用其默认的 crt0)并且没有办法禁用默认值crt0.

是否有一种可移植的方式来链接另一个启动文件?

我的启动文件使用 libgcc 函数(调用 ctors 和 dtors),所以 crtbegin.ocrtend.o 等。是必需的,所以我想避免禁用 crt*.o-nostartfiles 选项 - 我只需要禁用 crt0.o

谢谢

最佳答案

I am trying to link a program with my own start-up file ...
GCC driver is used to link the program ...

在这种情况下,您必须还向 GCC 提供 -nostartfiles 标志。

关于c - 与另一个启动文件链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16639792/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com