S.G*_*ami 2 compiling kernel compiler
出于好奇,我对使用clang和zapcc编译器编译Linux 内核很感兴趣;一次一个。
我找不到要遵循的指南。只有 GCC 被用来编译 Linux 内核。
如何使用其他编译器编译 Linux 内核?
Ste*_*itt 11
内核构建允许您指定要使用的工具;例如,要指定 C 编译器,请设置CC
和HOSTCC
变量:
make CC=clang HOSTCC=clang
Run Code Online (Sandbox Code Playgroud)
该构建预计只能使用 GCC 成功,但有人对使用 Clang感兴趣,并且已知它在某些情况下可以工作(某些 Android 内核是使用 Clang 构建的)。
感谢斯蒂芬·基特的回答。可以使用 Clang 编译 Linux 内核。但你需要 Clang v9.0。
如果您使用 Arch Linux,有一个很好的方法来 clang v9.0,而无需自己编译:
# Enable the testing repository (if not already enabled):
echo -e "[testing]\nInclude = /etc/pacman.d/mirrorlist" | sudo tee -a /etc/pacman.conf
# Update the database and install clang, llvm, llvm-libs
sudo pacman -Sy testing/clang testing/llvm testing/llvm-libs
# Check if you have clang-9:
clang --version
Run Code Online (Sandbox Code Playgroud)
注意:将来,如果额外的存储库添加了 clang 版本 9,您可以安装该.
获得 clang-9.0 后,从这里下载您选择的内核。
只需使用别名 make 编译内核即可:
alias make="make CC=clang HOSTCC=clang -j `nproc`"
Run Code Online (Sandbox Code Playgroud)
继续安装过程。
完成后,重新启动系统。然后输入:
cat /proc/version
Run Code Online (Sandbox Code Playgroud)
上面的代码将向您显示内核版本以及一些额外的详细信息。例如,我的 /proc/version 文件如下所示:
Linux version 5.4.0-rc1 (sourav@archlinux-pc) (clang version 9.0.0 (tags/RELEASE_900/final)) #1 SMP PREEMPT Sun Oct 6 18:02:41 IST 2019
Run Code Online (Sandbox Code Playgroud)
我不知道这是否是真正的安慰剂,但它的运行速度比 GCC 编译版本要快一些。我还用 clang9 和 zapcc 编译了 Xonotic 等游戏,其中 clang-9 的性能优于 zapcc-7.0 和 gcc 9.1.0。
我认为用 clang 9 编译内核是个好主意。但 zapcc 现在还不能这样做。根据 zapcc 7.0 版和 clang 8.0.1 版(我已经尝试过):
scripts/kconfig/conf --syncconfig Kconfig
Compiler lacks asm-goto support.
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!
归档时间: |
|
查看次数: |
7081 次 |
最近记录: |