我的祖国gcc说,它的三胞胎如下。
> gcc -dumpmachine
x86_64-suse-linux其中cpu供应商os相应地是x86_64、suse、linux.后者意味着滑翔生物正在使用(?)当我交叉编译基于busybux的系统时,编译器三重奏类似于avr32-linux- uclibc,其中os是'linux-uclibc',这意味着使用了uclibc。
“linux-glibc”和“linux-uclibc”在collect2行为和libgcc.a内容上的区别是(AFAIU)。glibc或uclib都静默地链接到目标二进制文件。
问题是linux内核是如何由相同的编译器编译的?内核一旦在裸金属上运行,就不能与任何类型的用户空间libc链接,并且应该使用适当的libgcc.a。
发布于 2013-11-07 18:08:37
gcc有各种各样的选择来控制它的工作方式。这里有几个相关的问题:
-nostdlib省略到标准库和启动代码的链接-nostdinc可以省略对标准位置中的头文件的搜索。-ffreestanding你也不需要用gcc来链接。您可以直接调用链接器,为其提供您自己的链接器映射、启动对象代码以及您需要的任何其他内容。
由于不使用-ffreestanding的任意原因,linux内核构建似乎控制了链接阶段,并确保内核在不需要任何用户空间代码的情况下进行链接。
https://stackoverflow.com/questions/19843191
复制相似问题