64位Ubuntu執行32位程式及下載依賴庫
阿新 • • 發佈:2019-01-03
嗯幹活的時候就是會遇到一些奇奇怪怪的問題。
執行32位程式
在普通的64位Ubuntu機器上直接執行32位的ELF程式會出現這樣的問題:
yy@yy-DELL:~$ ./cjpeg 115.bmp
bash: ./cjpeg: 沒有那個檔案或目錄
然而目錄下明明有這個檔案,這是因為64位系統中缺少32位程式執行時必要的庫。在Ubuntu12.04之前可以通過安裝庫ia32-libs
來解決此問題,在Ubuntu12.04之後的版本可以通過安裝lib32ncurses5
和lib32z1
來解決。
sudo apt-get install lib32ncurses5 lib32z1
下載安裝指定依賴庫
許多elf程式的執行會依賴一些共享庫,如果沒有安裝會有如下提示:
[email protected]:~$ ./cjpeg 115.bmp
./cjpeg: error while loading shared libraries: libjpeg.so.8: cannot open shared object file: No such file or directory
此時就需要先安裝共享庫libjpeg.so.8,可以通過apt-file找到想要安裝的共享庫在哪個包裡, 然後安裝這個包。
首先安裝apt-file:
sudo apt-get install apt-file
apt-file update
然後用apt-file的search選項來查詢共享庫:
[email protected]-DELL:~$ apt-file search libjpeg.so.8
libjpeg-turbo8: /usr/lib/x86_64-linux-gnu/libjpeg.so.8
libjpeg-turbo8: /usr/lib/x86_64-linux-gnu/libjpeg.so.8.0.2
安裝libjpeg-turbo8,注意對於32位的cjpeg程式,需要安裝32位的libjpeg-turbo8:
sudo apt-get install libjpeg-turbo8 :i386
其中i386指定了軟體包為32位。安裝完畢後再次執行cjpeg,可以看到cjpeg能夠正常執行啦。