是否可以使用 Intel 的编译器而不是 GCC 来编译完整的 Linux 系统?

是否可以使用 Intel 的编译器而不是 GCC 来编译完整的 Linux 系统?

也许存在一些兼容性问题?

我的印象是,对于基于 Intel 的系统,Intel 编译器可能会比 GCC 做得更好。也许已经有一个发行版尝试过这一点?

我认为使用 Gentoo 可能会非常简单。

答案1

您将无法使用 icc 编译所有内容。许多程序都使用 C 语言的 GCC 扩展。然而,英特尔已经做出了很大的努力来支持大多数这些扩展;例如,最近版本的icc可以编译Linux内核。

如果您喜欢以不寻常的方式重新编译软件,Gentoo 确实是您的最佳选择。这Gentoo wiki 上的 icc 页面描述了主要障碍。

首先进行基本的 Gentoo 安装,然后emerge icc.只要您的系统上有使用 icc 编译的任何二进制文件,以后就不要删除 icc。请注意,icc 安装在/opt;如果它不在您的根分区上,并且启动时使用的任何程序都是使用 icc 编译的,则需要将 icc 库复制到您的根分区。

设置/etc/portage/bashrc并声明您最喜欢的编译选项;看到Gentoo 维基一个更彻底的脚本,支持使用不同的编译器构建不同的包(这是必要的,因为 icc 会破坏一些包)。

export OCC="icc" CFLAGS="-O2 -gcc"
export OCXX="icpc" CXXFLAGS="$CFLAGS"
export CC_FOR_BUILD="${OCC}"

答案2

这肯定会是一次有趣的经历。然而,使用替代编译器重新编译整个 Linux 发行版并不是那么简单。许多重要的软件包依赖于 GCC 和其他 GNU 工具链实用程序。

对于那些不需要 GCC 创建混合的软件包,使用替代编译器是可行的。也许可以将依赖于 GCC 的包替换为可以使用编译器构建的其他包,但在大多数情况下,没有太多替代方案。如果有的话,您必须确定这些替代方案是否能够满足您的预期用途。

但真正的问题是:值得吗?如果您尝试构建嵌入式系统,替代编译器可能会生成更小的二进制文件。如果您正在构建计算集群,您可能会获得更快的代码执行速度。如果您正在构建桌面,您将获得良好的学习体验。

我认为最终(假设您正在构建桌面)您会发现许多源发行版用户最终做出的决定是正确的:优化、构建和重建所花费的时间远远超过了更快的代码执行所节省的时间。这并不是说不应该这样做——它可能会很有趣。如果您这样做,该网站将是寻找答案和记录您的努力的好地方。

相关内容