Embedded
當它肯定存在時,為什麼 sh 說“未找到”?
可能重複:
我正在嘗試將 ebtables 添加到一個小路由器盒中。我去為正確的架構編譯了一個二進製文件,並將它放在
/sbin/
. 當我這樣做/sbin/ebtables
時,外殼會說/bin/sh: /sbin/ebtables: not found
,但我可以這樣做ls -l /sbin/ebtables
並且它完美地顯示出來:-rwxr-xr-x 1 admin admin 4808 Aug 4 10:36 /sbin/ebtables
關於這裡發生了什麼的任何想法?
它可能是缺少的依賴項。
ELF
值得注意的是,如果您的系統上不存在標頭中設置的執行時連結器(“程序解釋器”),您將收到該類型的消息。要檢查這一點,請執行:
readelf -l your_executable|grep "program interpreter"
如果它給你的東西在你的系統上不存在,或者缺少依賴項(檢查
ldd
),你會得到那個奇怪的錯誤消息。展示:
$ gcc -o test t.c $ readelf -l test|grep "program interpreter" [Requesting program interpreter: /lib64/ld-linux-x86-64.so.2] $ ./test hello! $ gcc -Wl,--dynamic-linker -Wl,/i/dont/exist.so -o test t.c $ readelf -l test|grep "program interpreter" [Requesting program interpreter: /i/dont/exist.so] $ ./test bash: ./test: No such file or directory