我是靠谱客的博主 冷傲大白,最近开发中收集的这篇文章主要介绍Ubuntu 22.04.1 LTS 编译Linux-6.1 RUST例程 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

最后

以上就是冷傲大白为你收集整理的Ubuntu 22.04.1 LTS 编译Linux-6.1 RUST例程 Ubuntu 22.04.1 LTS 编译Linux-6.1 RUST例程 前期准备检查编译条件配置内核编译的全部内容,希望文章能够帮你解决Ubuntu 22.04.1 LTS 编译Linux-6.1 RUST例程 Ubuntu 22.04.1 LTS 编译Linux-6.1 RUST例程 前期准备检查编译条件配置内核编译所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部