Ubuntu 22.04.1 LTS 编译Linux-6.1 RUST例程

Ubuntu 22.04.1 LTS 编译Linux-6.1 RUST例程

Linux的源码基于C和汇编语言开发,近期引入了RUST作为第三种语言。有感于面向互联网开发确实很便利,也想作出一点点小贡献,分享基于Linux-6.1的RUST例程编译方法,希望兄弟们少踩坑。

前期准备

  1. 下载Linux-6.1源码

    下载Linux-6.1源码包,解压后进入源码目录,在源码目录中进行后续工作。

    wget https://codeload.github.com/torvalds/linux/tar.gz/refs/tags/v6.1
    
    tar -xzvpf linux-6.1.tar.gz
    
    cd linux-6.1
    
  2. 安装必要的依赖

    使用apt包管理器安装clang相关软件,编译Linux源码时用到,其他依赖包根据make提示逐个安装。

    apt install clang libclang-14-dev lld
    
  3. 安装rust工具链

    1. 安装和配置rustup管理工具链

      Rust 由工具 rustup 安装和管理。使用curl进行安装,使用默认配置,安装过程中出现提示选择第一个,如果卡在download installer,按Ctrol C取消,然后多尝试几次,可以安装成功。

      curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
      

      rustup默认使用国外源,下载很不流畅,替换为国内源,打开配置文件config。

          vim  $HOME/.cargo/config
      

      使用清华源,将以下文本内容写入config文件。

      [source.crates-io]
      replace-with = 'tuna'
      
      [source.tuna]
      registry = "https://mirrors.tuna.tsinghua.edu.cn/git/crates.io-index.git"
      

      使能环境变量,就可以愉快的玩耍了。

      source "$HOME/.cargo/env"
      
    2. 指定rustc的软件版本

      需要使用确定版本的rust编译器编译Linux-6.1,通过override指定rustc的版本为1.62.0。各种测试后,结论为其他版本rustc无法用于编译Linux-6.1,只能用rustc-1.62.0版本。

      rustup override set $(scripts/min-tool-version.sh rustc)
      
    3. 安装rust-src

      Rust标准库源码用于在编译Linux-6.1源码时编译core和alloc。

          rustup component add rust-src
      
    4. 安装bindgen

      使用bindgen工具在编译时绑定到内核的C端,需要安装bindgen-0.56.0

      cargo install --locked --version $(scripts/min-tool-version.sh bindgen) bindgen
      
    5. 安装rustfmt

      rustfmt工具用于自动格式化所有的Rust内核代码。

      rustup component add rustfmt
      

检查编译条件

Linux-6.1提供了检查是否支持编译Rust部分代码的方法。

make LLVM=1 rustavailable

提示:Rust is available!,表示满足编译条件

配置内核

  • 使能Rust support,进入General setup往下翻,最后一个就是。

    General setup
    -> Rust support

  • 使用Rust samples,使能Rust samples下级目录选项中的MinimalHost programs

    Kernel hacking
    -> Sample kernel code
    -> Rust samples

编译

编译机器为x86_64,未在其他架构设备验证。

make LLVM=1

编译成功。

built-in.a hostprogs modules.order rust_minimal.ko rust_minimal.mod rust_minimal.mod.c rust_minimal.mod.o rust_minimal.o

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值