Win10 linux 子系統 Exec format error , Not an ELF file - it has the wrong magic bytes at the start ...
本文主要描述的是:解決 Win10 Ubuntu子系統中運行 32bit Linux原生程式 報錯 Exec format error 。
問題來源於 在 Win10 Ubuntu子系統中運行 Linux原生交叉編譯器 32bit gcc 。
解壓gcc 後直接運行
./arm-linux-gcc -v 報錯 : Exec format error
按照常規方式 : 原生 Ubuntu 添加 32bit 運行環境
sudo dpkg --add-architecture i386 sudo apt-get update sudo apt-get install libc6:i386
sudo apt-get install lib32ncurses5 lib32ncurses5-dev
sudo apt-get install lib32z1
並沒有解決問題。
報錯同樣是 Exec format error
通過 readelf -a arm-linux-gcc 檢查程式導出表發現問題
readelf 命令報錯:Not an ELF file - it has the wrong magic bytes at the start
初步確定問題來源,子系統不支持原生linux文件頭。
而後通過搜索此錯誤找到相關english網頁。 此問題。
解決方式如下:
添加xxx形式文件頭支持
1 sudo apt update 2 sudo apt install qemu-user-static 3 sudo update-binfmts --install i386 /usr/bin/qemu-i386-static --magic '\x7fELF\x01\x01\x01\x03\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x03\x00\x01\x00\x00\x00' --mask '\xff\xff\xff\xff\xff\xff\xff\xfc\xff\xff\xff\xff\xff\xff\xff\xff\xf8\xff\xff\xff\xff\xff\xff\xff'
可能還有其他依賴需要安裝,按照原生linux 的教程即可。 一直在找問題 安裝了不少東西,其中有沒有用未知。