277 字
1 分钟
Linux快速切换交叉编译器版本
确保/usr/local/arm下有以下命令格式的交叉编译器文件夹:
gcc-版本号-arm-linux-gnueabihf比如
gcc-7.5.0-arm-linux-gnueabihfShell文件:
#!/bin/bash
# 所有工具链的根目录TOOLCHAIN_ROOT="/usr/local/arm"
# 显示所有可用版本function list_versions() { echo "Available toolchain versions:" for dir in "$TOOLCHAIN_ROOT"/gcc-*; do ver=$(basename "$dir" | sed 's/^gcc-\(.*\)-arm.*/\1/') echo " - $ver" done}
# 显示当前交叉编译器版本function current_version() { which arm-linux-gnueabihf-gcc >/dev/null 2>&1 || { echo "arm-linux-gnueabihf-gcc not found in PATH" return }
echo -n "Current compiler version: " arm-linux-gnueabihf-gcc -v 2>&1 | grep "gcc 版本" | awk '{print $3}'}
# 切换工具链function switch_version() { local version=$1 local match_dir="$TOOLCHAIN_ROOT/gcc-${version}-arm-linux-gnueabihf"
if [ ! -d "$match_dir" ]; then echo "Error: Toolchain version $version not found in $TOOLCHAIN_ROOT" list_versions return 1 fi
# 清除当前 PATH 中旧的 toolchain 目录 export PATH=$(echo "$PATH" | tr ':' '\n' | grep -v "$TOOLCHAIN_ROOT" | paste -sd ':' -) # 加入新版本路径 export PATH="$match_dir/bin:$PATH"
echo "Switched to toolchain version $version" current_version}
# 参数处理case "$1" in list) list_versions ;; current) current_version ;; switch) if [ -z "$2" ]; then echo "Usage: source toolchain-switcher.sh switch <version>" else switch_version "$2" fi ;; *) echo "Usage:" echo " source toolchain-switcher.sh list # List available versions" echo " source toolchain-switcher.sh current # Show current version" echo " source toolchain-switcher.sh switch 4.9.4 # Switch to version" ;;esac仅在当前终端中一次性有效
Linux快速切换交叉编译器版本
https://arkmostima.pages.dev/posts/linux快速切换交叉编译器版本/