277 字
1 分钟
Linux快速切换交叉编译器版本

确保/usr/local/arm下有以下命令格式的交叉编译器文件夹:

gcc-版本号-arm-linux-gnueabihf

比如

gcc-7.5.0-arm-linux-gnueabihf

Shell文件:

#!/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快速切换交叉编译器版本/
作者
Aki
发布于
2025-04-12
许可协议
CC BY-NC-SA 4.0