Embedded

當它肯定存在時,為什麼 sh 說“未找到”?

  • August 4, 2011

可能重複:

“沒有這樣的文件或目錄”位於 Optware 安裝的二進製文件中

我正在嘗試將 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

引用自:https://unix.stackexchange.com/questions/18061