ubuntu16.04(64位)兼容32位程序

現象

在64位機上執行某些程序時提示:linux

bash: ./mkbootimg: No such file or directoryc++

web

./arm-linux-gnueabi-gcc: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directoryubuntu

注意:以上兩個錯誤提示例子中mkbootimg和arm-linux-gnueabi-gcc在執行的當目錄中必定存在且沒有被破壞。bash

查看mkbootimg和arm-linux-gnueabi-gcc信息,以下圖所示:


由此可知,mkbootimg和arm-linux-gnueabi-gcc都是32位程序,在64位機上沒法運行。svg

解決辦法

在ubuntu 12.04及以前的版本,若是須要在64位機上運行32位程序,能夠直接安裝 ia32-libs,其命令以下:測試

sudo apt-get install ia32-libsxml

可是在ubuntu 12.04以後的版本不能直接安裝ia32-libs,已經沒有該軟件包,須要手動安轉兼容包。blog

兼容32位程序

在ubuntu 64位機上只是兼容32位程序,使其能夠運行,須要安裝的軟件包有:libc6:i38六、libstdc++6:i386,安裝以上兩個包以後32位程序就能夠在64位機上運行,其安裝指令爲:開發

sudo apt install libc6:i386
sudo apt install libstdc++6:i386
或者直接安裝gcc-multilib解決問題(推薦使用此方法)
sudo apt install gcc-multilib

安裝完後再次執行arm-linux-gnueabi-gcc,結果以下:

由此可知,已經可以執行32位程序了,兼容包安裝完成。

開發32位程序

開發32位程序沒有測試過,可能須要其餘軟件包,可是開發32位程序建議直接使用32位機。