确保/usr/local/arm
下有以下命令格式的交叉编译器文件夹:
1
| gcc-版本号-arm-linux-gnueabihf
|
比如
1
| gcc-7.5.0-arm-linux-gnueabihf
|
Shell文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
| #!/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
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
|
仅在当前终端中一次性有效