【发布时间】:2019-02-14 20:27:03
【问题描述】:
如何在没有 CRT 的情况下实现链接 2 .o 文件。
编译.c文件:
gcc -ffreestanding -c file.c -o file.o
链接:
gcc file1.o file2.o -o f.o
标志 -nostartfiles 和 -nostdlib 对我没有帮助。
【问题讨论】:
-
您的“链接”不是用于生成目标文件的 gcc 命令行...您需要扩展您的问题以描述您想要的结果。另一个目标文件?静态库?共享对象?可执行文件? ELF 格式? a.out 格式? PE格式?原始二进制文件?然后通过你的尝试,描述实际发生的事情以及需要改变的地方。
-
@BenVoigt 我只编译了 2 个 .c 文件,我想将它们链接到 1 个目标文件中。我正在编写一个操作系统,我想将我的内核与另一个包含一些函数的 C 文件链接,并且而不是将它与引导加载程序链接,但我的内核与 CTR 链接,因此它不能正常工作。
-
但是为什么你认为你需要中间合并的目标文件呢?您可以在最后的链接步骤中传递所有对象,即创建完全解析的可执行文件。如果您不想跟踪所有目标文件,那就是静态库的用途。
-
@BenVoigt 我需要通过将引导加载程序与内核链接的方式在最后获取 .bin 文件,但在此之前我需要从多个文件链接内核,在步骤中内核也与 CRT 链接,即不需要。