1*f179f81bSsu# 当前脚本用于初始化自定义的Rust工具链 2*f179f81bSsuif [ -z "$(which cargo)" ]; then 3*f179f81bSsu echo "尚未安装Rust,请先安装Rust" 4*f179f81bSsu exit 1 5*f179f81bSsufi 6*f179f81bSsu 7*f179f81bSsuDRAGONOS_UNKNOWN_ELF_PATH=$(rustc --print sysroot)/lib/rustlib/x86_64-unknown-dragonos 8*f179f81bSsumkdir -p ${DRAGONOS_UNKNOWN_ELF_PATH}/lib 9*f179f81bSsu# 设置工具链配置文件 10*f179f81bSsuecho \ 11*f179f81bSsu"{\ 12*f179f81bSsu \"arch\": \"x86_64\", 13*f179f81bSsu \"code-model\": \"kernel\", 14*f179f81bSsu \"cpu\": \"x86-64\", 15*f179f81bSsu \"os\": \"dragonos\", 16*f179f81bSsu \"target-endian\": \"little\", 17*f179f81bSsu \"target-pointer-width\": \"64\", 18*f179f81bSsu \"target-c-int-width\": \"32\", 19*f179f81bSsu \"data-layout\": \"e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128\", 20*f179f81bSsu \"disable-redzone\": true, 21*f179f81bSsu \"features\": \"-3dnow,-3dnowa,-avx,-avx2\", 22*f179f81bSsu \"linker\": \"rust-lld\", 23*f179f81bSsu \"linker-flavor\": \"ld.lld\", 24*f179f81bSsu \"llvm-target\": \"x86_64-unknown-none\", 25*f179f81bSsu \"max-atomic-width\": 64, 26*f179f81bSsu \"panic-strategy\": \"abort\", 27*f179f81bSsu \"position-independent-executables\": true, 28*f179f81bSsu \"relro-level\": \"full\", 29*f179f81bSsu \"stack-probes\": { 30*f179f81bSsu \"kind\": \"inline-or-call\", 31*f179f81bSsu \"min-llvm-version-for-inline\": [ 32*f179f81bSsu 16, 33*f179f81bSsu 0, 34*f179f81bSsu 0 35*f179f81bSsu ] 36*f179f81bSsu }, 37*f179f81bSsu \"static-position-independent-executables\": true, 38*f179f81bSsu \"supported-sanitizers\": [ 39*f179f81bSsu \"kcfi\" 40*f179f81bSsu ], 41*f179f81bSsu \"target-pointer-width\": \"64\" 42*f179f81bSsu}" > ${DRAGONOS_UNKNOWN_ELF_PATH}/target.json || exit 1