關(guān)于-/bin/sh:xx(命令) not found 的幾種原因和解決辦法
編寫背后:昨天移植無線網(wǎng)卡到mini2440基本完成到最后一步:用命令:iwlist scanning? 搜索網(wǎng)絡(luò)時(shí)串口終端卻出現(xiàn)了 -/bin/sh: iwlist? not? found ,后來請(qǐng)教老范老師點(diǎn)撥知道是庫(kù)問題,最后自己找到問題、解決問題,才有此引發(fā)有所總結(jié)......?
關(guān)于-/bin/sh:xx(命令) not found? 的幾種原因:
1https://blog.csdn.net/yx_l128125/article/details/bin/目錄下沒有這個(gè)命令;
2.bin/目錄有這個(gè)命令,只是執(zhí)行權(quán)限不夠,或者程序執(zhí)行權(quán)限不夠;
3.程序需要的靜態(tài)庫(kù)或者動(dòng)態(tài)庫(kù)沒有;
解決辦法:
原因一的解決方法:安裝busy box將busy box支持的命令安裝到文件系統(tǒng)的bin目錄下;(只要安裝了busy box它會(huì)自動(dòng)加載命令到bin目錄下,這個(gè)你懂的,若不懂請(qǐng)看我的博文《根文件系統(tǒng)的制作》)
原因二的解決方法:在/bin/目錄下找到對(duì)應(yīng)的命令,修改其權(quán)限為777;具體操作: chmod?? 777? xx(命令)? 【附加:在編寫執(zhí)行腳本文件時(shí)不能運(yùn)行也大多是沒有修改腳本權(quán)限的問題(命令其實(shí)就是一個(gè)特殊的腳本)】
原因三的解決方法:
(1)最“高效”的解決方法:用命令:arm-linux-readelf?? -d?? xxx(目標(biāo)文件/命令)??? 查看xxx使用的動(dòng)態(tài)庫(kù)
如圖:我的iwlist命令使用的動(dòng)態(tài)庫(kù)是libiw.so.29 、libm.so.6 和libc.so.6??
于是我便去交叉編譯器所在目錄/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib下的動(dòng)態(tài)庫(kù)中尋找所需的上面三個(gè)庫(kù)libiw.so.29 、libm.so.6 和libc.so.6??,并復(fù)制到根文件系統(tǒng)的lib目錄下:
(注意:這里我使用交叉編譯器的版本為4.3.2的版本所以目錄4.3.2有所不同即到/usr/local/arm/(編譯器版本)/arm-none-linux-gnueabi/libc/armv4t/lib下的動(dòng)態(tài)庫(kù)中尋找)
(2)最“2”最笨的方法:把/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib下的所有動(dòng)態(tài)庫(kù)都拷貝到根文件系統(tǒng)的lib目錄下;(但是這種方法在嵌入式開發(fā)里面無意增加了成本,拷貝了一些不必要的動(dòng)態(tài)庫(kù)文件,增大了根文件系統(tǒng)的體積)
轉(zhuǎn)載請(qǐng)注明來自濟(jì)南富森木工刀具制造有限公司 ,本文標(biāo)題:《關(guān)于-/bin/sh:xx(命令) not found 的幾種原因和解決辦法》
還沒有評(píng)論,來說兩句吧...