在宿主機(x86)上使用交叉編譯器編譯的可執行文件,複製到 ARM 開發板運行時提示 Illegal instruction,程序無法啟動。
核心原因是 交叉編譯器架構版本與目標 CPU 不匹配:
arm-linux-gcc-4.5.1-v6-vfp-20101103.tgz(面向 ARMv6/ARM11,帶 VFP 浮點)ARMv6 指令集包含 ARMv5 不支持的指令(如媒體指令、Thumb-2 等),導致 ARM9 核心解碼失敗,拋出非法指令異常。
rm -rf /opt/arm-linux-gcc-4.5.1-v6-vfp*(根據實際安裝路徑調整)arm-linux-gcc-3.4.3.tar.gz 或 arm-linux-gnueabi-gcc-4.3.2(支持 ARMv5TE)v5、v6、v7、vfp、neon 等編譯後可用 readelf -A executable 查看 Tag_CPU_arch,確認標註為 v5 或 v5te;或在開發板執行 cat /proc/cpuinfo 對照 CPU 架構。