Win10 Ubuntu子系統(內嵌ubuntu18.04)運行32bit Linux原生程序 解決Exec format error錯誤

一.緣由

電腦重裝後,重裝arm板的開發環境,win10有內嵌linux環境非常好用,就用上了。
安裝正常流程進行安裝:
(1)下載壓縮包文件:arm-none-linux-gnueabi.tar.bz2 並解壓縮到/home/ctools/中
tar jxvf gcc-4.4.4-glibc-2.11.1-multilib-1.0_EasyARM-iMX283.tar.bz2 -C /home/ctools/
(2)路徑引用:修改 全局配置文件 (全局sudo /etc下-對所有用戶生效) 
打開終端-然後sudo vi /etc/profile;在文件結尾輸入:
export PATH=$PATH:/home/ctools/gcc-4.4.4-glibc-2.11.1-multilib-1.0/arm-fsl-linux-gnueabi/bin

然後輸入“. /etc/profile”(點+空格+文件名),執行 profile 文件,使剛纔的改動生效。
如果沒有書寫錯誤,此時打開終端,輸入 arm-none-linux-gnueabi-,然後按鍵盤 TAB 鍵2-3次,同樣可以看到很多 arm-none-linux-gnueabi-開頭的命令:

(3)修改用戶配置文件
   “/etc/profile”是全局配置文件,會影響登錄本機的全部用戶。如果不希望影響其他用戶,也可以只修改當前用戶的配置文件,通常是“~/.bashrc”或者“~/.bash_profile”。修改方法與修改“/etc/profile”類似,這是無需 sudo,直接 vi 打開即可,在文件末尾增加:
export PATH=$PATH:/home/ctools/gcc-4.4.4-glibc-2.11.1-multilib-1.0/arm-fsl-linux-gnueab/bin/
與執行“/etc/profile”的方式一樣,輸入“. .bashrc”或者“. .bash_profile”,執行修改過的文件,使修改生效。如果無誤,打開終端,輸入 arm-none-linux-gnueabi-,然後按鍵盤 TAB鍵,同樣可以看到很多 arm-none-linux-gnueabi-開頭的命令;

(4)驗證環境--測試工具鏈  
簡單測試。打開終端,輸入交叉編譯器命令,如 arm-none-linux-gnueabi-gcc,然後回車,能夠得到下列類似信息,說明交叉編譯器已經能夠正常工作了。
$ arm-none-linux-gnueabi-gcc
    arm-none-linux-gnueabi-gcc: no input files
如果顯示指令找不到,就是沒有工作!!!!需要檢查環境的安裝問題(gcc類型、版本和其他可能的配置問題)!
——————————————————
如下就是安裝在第四步驟後,進行編譯的時候出現可以找到編譯器的路徑,但是報錯錯  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形式文件頭支持


sudo apt update
sudo apt install qemu-user-static
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'

如下:

參考:https://www.cnblogs.com/JiuHuan/p/10073632.html (超級感謝該大神!)

 

 

 

發佈了70 篇原創文章 · 獲贊 91 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章