gcc 版本和内核版本之间有联系吗?具体来说,我能否将非常老版本的 gcc 安装到最新内核上。或者,我能否在非常老的内核上构建最新版本的 gcc?对于任何版本,这两者之间是否存在兼容性问题?
答案1
你可能会有麻烦编译新内核很古老GCC 版本。
除此之外,GCC 版本与 Linux 内核的版本无关:
- 您可以在具有新内核的系统上运行古老的 GCC 版本。
- 您可以在具有非常旧内核的系统上运行新 GCC 版本。唯一会阻止您这样做的情况是,如果您的新 GCC 版本需要的版本
libc
无法在该内核上运行。但这种情况不太可能发生。
照这样说,你应该小心安装旧版 GCC超过更新的 GCC,因为可能需要较新的 GCC。如果您自己从源代码构建 GCC,则可以将构建配置为安装在其自己的前缀中(而不是/usr
)。如果这仍然破坏构建,请确保较新的 GCC(之前存在)在PATH
环境变量中的目录中的位置早于较旧的 GCC(您最近安装的)。
答案2
我会谨慎在较新的系统上使用较旧的 GCC 版本,特别是如果旧版本的可执行文件未命名为 gcc-1.3(例如,如果在这种情况下版本是 1.3),因为否则它可能会与当前用于 Ubuntu 系统上所有内容的版本冲突,并破坏一些东西。
不过,要回答你的问题,内核和 GCC 没有直接关系,但很可能内核是建造与您正在使用的 GCC 版本 (或稍旧一些的版本) 相同。
答案3
是的。一些新的内核功能需要最新版本的 gcc 和 glibc 才能正常工作。但这并不是一个限制性约束,例如内核 3.0.2 只能与 gcc 4.2.1 配合使用。更像是内核 3.x 只能与 gcc 4.2.x 配合使用