[英]“Cannot execute binary file” when running compiled c++ programs with Eclipse on Ubuntu for Windows platform
[英]Why won't my compiled c++ binary execute?
所以我剛剛編譯了代碼,當我嘗試執行二進制文件時,
-bash: ./a.out: No such file or directory
當我做ldd a.out
我看到了我需要的一切
ldd a.out
linux-vdso.so.1 (0x00007ffd337fb000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f1200930000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f1200728000)
libncurses.so.5 => /lib/x86_64-linux-gnu/libncurses.so.5 (0x00007f1200505000)
libtinfo.so.5 => /lib/x86_64-linux-gnu/libtinfo.so.5 (0x00007f12002db000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f12000d7000)
libcap.so.2 => /lib/x86_64-linux-gnu/libcap.so.2 (0x00007f11ffed1000)
libnsl.so.1 => /lib/x86_64-linux-gnu/libnsl.so.1 (0x00007f11ffcb7000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f11ff919000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f11ff6fa000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f11ff309000)
/usr/lib/ld-linux-x86-64.so.2 => /lib64/ld-linux-x86-64.so.2 (0x00007f1200b4d000)
同樣執行ls -la
顯示文件如下
lrwxrwxrwx 1 user user 33 Jul 18 21:26 a.out
有誰有任何理由不起作用?
我正在使用Ubuntu 18.04.2 LTS。
當我做
ldd a.out
我看到了我需要的一切
不,沒有。
ldd
已更改為運行已知的ELF解釋器/動態鏈接器,而不是運行二進制文件頭中的鏈接器。 您可以自己檢查ldd
是系統上的Shell腳本。
ldd a.out ... /usr/lib/ld-linux-x86-64.so.2 => /lib64/ld-linux-x86-64.so.2
這就是證明。 您的系統上是否有/usr/lib/ld-linux-x86-64.so.2
?
一個更簡單的測試用例:
$ echo 'int main(){}' | cc -xc -
$ ./a.out
$ perl -pe 's/ld-linux/ld-LOOOL/' -i ./a.out
$ ./a.out
bash: ./a.out: No such file or directory
$ ldd ./a.out
linux-vdso.so.1 (0x00007ffd707e9000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fe936d52000)
/lib64/ld-LOOOL-x86-64.so.2 => /lib64/ld-linux-x86-64.so.2 (0x00007fe9372f3000)
作為快速解決方案,您可以在編譯程序時將路徑傳遞給現有的解釋器
cc -Wl,-dynamic-linker,/lib64/ld-linux-x86-64.so.2 ...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.