Linux運(yùn)行程序錯(cuò)誤的解決方法
linux是一個(gè)開源的免費(fèi)的操作系統(tǒng),可能接觸linux系統(tǒng)的用戶沒有windows系統(tǒng)的用戶多,但是其功能和界面卻完全不遜于windows系統(tǒng)。下面是教大家解決Linux運(yùn)行程序錯(cuò)誤的方法,具體內(nèi)容如下所述。
現(xiàn)象:
本機(jī)安裝的是Linux;運(yùn)行32位的apache; 錯(cuò)誤提示:Nosuchfileordirectory
解決過程:
首先我查看次二進(jìn)制程序是否是unix/linux版本的:
- filefilename:httpd:setuidELF32-bitLSBexecutable,Intel80386,version1(SYSV),dynamicallylinked(usessharedlibs),forGNU/Linux2.2.5,notstripped
由此可見此程序是32位可執(zhí)行l(wèi)inux程序;
第二步查看操作系統(tǒng)版本:
- uname-a:Linuxubuntu2.6.35-22-generic#33-UbuntuSMPSunSep1920:32:27UTC2010x86_64GNU/Linux
可見安裝的內(nèi)核是64位的linux;
那么可以定位問題為32位的可執(zhí)行程序不能在64位內(nèi)核上運(yùn)行的的問題;但是我只到64為內(nèi)核是可以運(yùn)行32為的程序的,可能是缺少一些32位的動(dòng)態(tài)庫吧。于是google了下,發(fā)現(xiàn)果然是缺少ia32-libs這個(gè)包;于是apt-getinstallia32-lib安裝這個(gè)包;
問題解決;
總結(jié):我們知道一個(gè)可執(zhí)行二進(jìn)制程序文件頭都是有一個(gè)魔數(shù)的,比如linuxc程序的都有ELF魔數(shù);現(xiàn)如今linux環(huán)境在加載可執(zhí)行程序時(shí),可以動(dòng)態(tài)根據(jù)不同的魔數(shù),加載java,ruby,python,awk,go,等等語言的執(zhí)行器來執(zhí)行程序;
同樣一個(gè)技巧,有時(shí)候我們運(yùn)行一個(gè)程序時(shí)會(huì)報(bào)缺少動(dòng)態(tài)鏈接庫的問題,我們先oddfilename;可以知道缺少的庫;
總結(jié):
Linux運(yùn)行程序錯(cuò)誤的解決方法希望能夠?qū)Υ蠹矣兴鶐椭?,更?a >有關(guān)linux系統(tǒng)的知識(shí)還有待于讀者去探索和學(xué)習(xí)。