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