首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GNU、GCC与Linux内核编译

GNU、GCC与Linux内核编译
EN

Stack Overflow用户
提问于 2013-11-07 17:55:59
回答 1查看 1.1K关注 0票数 3

我的祖国gcc说,它的三胞胎如下。

代码语言:javascript
复制
> 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。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-07 18:08:37

gcc有各种各样的选择来控制它的工作方式。这里有几个相关的问题:

  • -nostdlib省略到标准库和启动代码的链接
  • -nostdinc可以省略对标准位置中的头文件的搜索。
  • 为独立环境(如内核)编译的-ffreestanding

你也不需要用gcc来链接。您可以直接调用链接器,为其提供您自己的链接器映射、启动对象代码以及您需要的任何其他内容。

由于不使用-ffreestanding的任意原因,linux内核构建似乎控制了链接阶段,并确保内核在不需要任何用户空间代码的情况下进行链接。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19843191

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档