Linux

執行程序沒有這樣的文件或文件夾錯誤

  • January 20, 2018

我無法執行簡單的執行檔。

的結果ll

user@user-SATELLITE-C855-169:~/Bureau/Workspace/buildroot/buildroot/output/host/opt/ext-toolchain/bin$ ll
total 16948
drwxr-xr-x 2 user user    4096 avril 18  2014 ./
drwxr-xr-x 8 user user    4096 janv. 18 21:01 ../
-rwxr-xr-x 1 user user  565152 avril 18  2014 armv5-ctng-linux-gnueabi-addr2line*
-rwxr-xr-x 2 user user  589764 avril 18  2014 armv5-ctng-linux-gnueabi-ar*
-rwxr-xr-x 2 user user 1035780 avril 18  2014 armv5-ctng-linux-gnueabi-as*
-rwxr-xr-x 2 user user  624784 avril 18  2014 armv5-ctng-linux-gnueabi-c++*
lrwxrwxrwx 1 user user      28 avril 18  2014 armv5-ctng-linux-gnueabi-cc -> armv5-ctng-linux-gnueabi-gcc*
-rwxr-xr-x 1 user user  563424 avril 18  2014 armv5-ctng-linux-gnueabi-c++filt*

這就是我執行的方式armv5-ctng-linux-gnueabi-ar

user@user-SATELLITE-C855-169:~/Bureau/Workspace/buildroot/buildroot/output/host/opt/ext-toolchain/bin$ ./armv5-ctng-linux-gnueabi-ar

這給

No such file or folder

每個文件末尾的 * 是什麼意思——有什麼特別的嗎?

編輯

@Arkadiusz Drabczyk 提出的 manip:

user@user-SATELLITE-C855-169:~/Bureau/Workspace/buildroot/buildroot/output/host/opt/ext-toolchain/bin$ readelf -a armv5-ctng-linux-gnueabi-ar | grep "Requesting program interpreter:"
 [Requesting program interpreter: /lib/ld-linux.so.2]

@steeldriver 提出的 manip:

user@user-SATELLITE-C855-169:~/Bureau/Workspace/buildroot/buildroot/output/host/opt/ext-toolchain/bin$ arch
x86_64

我使用的是 64 位作業系統。

user@user-SATELLITE-C855-169:~/Bureau/Workspace/buildroot/buildroot/output/host/opt/ext-toolchain/bin$ file armv5-ctng-linux-gnueabi-ar
armv5-ctng-linux-gnueabi-ar: ELF 32-bit LSB  executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, BuildID[sha1]=8dac66869f5be2dbb2bee517e289901c4be80db5, stripped

該二進製文件似乎適用於 32 位架構ELF 32-bit

任何幫助,每個文件末尾的 * 是什麼意思有什麼特別的嗎?

您的ll別名可能包含-F在文件名後添加字元的選項。來自man ls

  -F, --classify
         append indicator (one of */=>@|) to entries

在許多 shell 中,例如您可以使用命令bash檢查別名是如何擴展的。type例如,在我的系統上:

$ type ll ll is aliased to 'ls -Alhtr --color'

現在,您說給您錯誤的文件是二進製文件,因此可能是由於載入程序不正確。嘗試它請求的載入器並確保你擁有它:

$ readelf -a armv5-ctng-linux-gnueabi-ar | grep "Requesting program interpreter:"

如果二進製文件被指定在x32系統上執行,它將x32/lib. 如果沒有,它將無法啟動。所以現在,根據您使用的系統,您需要找到一種方法來為您的系統添加 32 位兼容層。例如,Ubuntu它很簡單——只需一個人apt-get install就可以完成這項工作,因為Slackware它在此處進行了描述:http ://docs.slackware.com/slackware:multilib 。

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