2016-12-05 117 views
1

我有一個3.4內核的Linux虛擬機,我想運行一個編譯的ELF二進制文件。
ELF二進制錯誤Unix(「./X沒有這樣的文件或目錄」)

bash-4.3# file insane 
insane: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=0d449c7f73019c2ac7708f6bd0b21558da139135, stripped 

我編這在Ubuntu 32位,現在我要與Linux內核3.4.0
LDD Unix的圖像上的Unix i386的虛擬機上運行它,它不工作:

bash-4.3# ldd insane 
insane: 
     -lc.6 => not found 

LDD在Ubuntu 32位,我編譯二進制和工作原理:

ldd insane 
    linux-gate.so.1 => (0xb7784000) 
    libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb75b5000) 
    /lib/ld-linux.so.2 (0x80086000) 

這些都是我的圖書館:

bash-4.3# ls /usr/lib/ 
bc          liblua.so 
cawf         liblua.so.5 
crontab         liblua.so.5.3 
crt0.o         liblua_pic.a 
crtbegin.o        liblutok.a 
crtbeginS.o        liblutok.so 
crtbeginT.o        liblutok.so.2 
crtend.o        liblutok.so.2.0 
crtendS.o        liblutok_pic.a 
crti.o         liblwip.a 
crtn.o         liblwip_pic.a 
fonts         liblzma.a 
gcrt0.o         liblzma.so 
keymaps         liblzma.so.2 
libarchive.a       liblzma.so.2.0 
libarchive.so       liblzma_pic.a 
libarchive.so.3       libm.a 
libarchive.so.3.1      libm.so 
libarchive_pic.a      libm.so.0 
libasyn.a        libm.so.0.11 
libasyn_pic.a       libm387.a 
libatf-c++.a       libm387.so 
libatf-c++.so       libm387.so.0 
libatf-c++.so.1       libm387.so.0.1 
libatf-c++.so.1.0      libm387_pic.a 
libatf-c++_pic.a      libm_pic.a 
libatf-c.a        libmagic.a 
libatf-c.so        libmagic.so 
libatf-c.so.0       libmagic.so.5 
libatf-c.so.0.0       libmagic.so.5.1 
libatf-c_pic.a       libmagic_pic.a 
libaudiodriver.a      libmenu.a 
libaudiodriver_pic.a     libmenu.so 
libbdev.a        libmenu.so.6 
libbdev_pic.a       libmenu.so.6.0 
libbfd.so.13       libmenu_pic.a 
libbfd.so.13.0       libminc.a 
libblacklist.a       libminixfs.a 
libblacklist.so       libminixfs_pic.a 
libblacklist.so.0      libmj.a 
libblacklist.so.0.0      libmj.so 
libblacklist_pic.a      libmj.so.1 
libblockdriver.a      libmj.so.1.0 
libblockdriver_pic.a     libmj_pic.a 
libbz2.a        libmthread.a 
libbz2.so        libmthread.so 
libbz2.so.1        libmthread.so.0 
libbz2.so.1.1       libmthread.so.0.0 
libbz2_pic.a       libmthread_pic.a 
libc++.a        libnetdriver.a 
libc++.so        libnetdriver_pic.a 
libc++.so.1        libnetpgp.a 
libc++.so.1.0       libnetpgp.so 
libc++_pic.a       libnetpgp.so.3 
libc.a         libnetpgp.so.3.0 
libc.so         libnetpgp_pic.a 
libc.so.12        libnetpgpverify.a 
libc.so.12.197       libnetpgpverify.so 
libc_pic.a        libnetpgpverify.so.4 
libchardriver.a       libnetpgpverify.so.4.0 
libchardriver_pic.a      libnetpgpverify_pic.a 
libcrypt.a        libnetsock.a 
libcrypt.so        libnetsock_pic.a 
libcrypt.so.1       libopcodes.so.6 
libcrypt.so.1.0       libopcodes.so.6.0 
libcrypt_pic.a       libpci.a 
libcrypto.a        libpci.so 
libcrypto.so       libpci.so.2 
libcrypto.so.8       libpci.so.2.1 
libcrypto.so.8.4      libpci_pic.a 
libcrypto_pic.a       libprop.a 
libcurses.a        libprop.so 
libcurses.so       libprop.so.1 
libcurses.so.7       libprop.so.1.1 
libcurses.so.7.0      libprop_pic.a 
libcurses_pic.a       libpuffs.a 
libddekit.a        libpuffs.so 
libddekit_pic.a       libpuffs.so.2 
libddekit_usb_client.a     libpuffs.so.2.0 
libddekit_usb_client_pic.a    libpuffs_pic.a 
libddekit_usb_server.a     librefuse.a 
libddekit_usb_server_pic.a    librefuse.so 
libdes.a        librefuse.so.2 
libdes.so        librefuse.so.2.0 
libdes.so.8        librefuse_pic.a 
libdes.so.8.2       librmt.a 
libdes_pic.a       libsaslc.a 
libdevman.a        libsaslc.so 
libdevman_pic.a       libsaslc.so.0 
libedit.a        libsaslc.so.0.0 
libedit.so        libsaslc_pic.a 
libedit.so.3       libsffs.a 
libedit.so.3.1       libsffs_pic.a 
libedit_pic.a       libsqlite3.a 
libelf.a        libsqlite3.so 
libelf.so        libsqlite3.so.1 
libelf.so.1        libsqlite3.so.1.2 
libelf.so.1.0       libsqlite3_pic.a 
libelf_pic.a       libssl.a 
libevent.a        libssl.so 
libevent.so        libssl.so.10 
libevent.so.4       libssl.so.10.5 
libevent.so.4.0       libssl_pic.a 
libevent_openssl.a      libsys.a 
libevent_openssl.so      libsys.so 
libevent_openssl.so.4     libsys.so.0 
libevent_openssl.so.4.0     libsys.so.0.0 
libevent_openssl_pic.a     libsys_pic.a 
libevent_pic.a       libtermcap.a 
libexec.a        libtermcap.so 
libexec_pic.a       libtermcap.so.0 
libexecinfo.a       libtermcap.so.0.6 
libexecinfo.so       libtermcap_pic.a 
libexecinfo.so.0      libterminfo.a 
libexecinfo.so.0.0      libterminfo.so 
libexecinfo_pic.a      libterminfo.so.1 
libexpat.a        libterminfo.so.1.0 
libexpat.so        libterminfo_pic.a 
libexpat.so.2       libtermlib.a 
libexpat.so.2.1       libtermlib.so 
libexpat_pic.a       libtermlib.so.0 
libfetch.a        libtermlib.so.0.6 
libfetch.so        libtermlib_pic.a 
libfetch.so.3       libtimers.a 
libfetch.so.3.0       libtimers_pic.a 
libfetch_pic.a       libusb.a 
libfl.a         libusb_pic.a 
libform.a        libutil.a 
libform.so        libutil.so 
libform.so.6       libutil.so.7 
libform.so.6.0       libutil.so.7.23 
libform_pic.a       libutil_pic.a 
libfsdriver.a       libvassert.a 
libfsdriver_pic.a      libvboxfs.a 
libgcc_s.a        libvboxfs_pic.a 
libgcc_s.so        libvirtio.a 
libgcc_s.so.1       libvirtio_pic.a 
libgcc_s.so.1.0       libvtreefs.a 
libhgfs.a        libvtreefs_pic.a 
libhgfs_pic.a       libz.a 
libinputdriver.a      libz.so 
libinputdriver_pic.a     libz.so.1 
libkvm.a        libz.so.1.0 
libkvm.so        libz_pic.a 
libkvm.so.6        lua 
libkvm.so.6.0       pkgconfig 
libkvm_pic.a       pwdauth 
libl.a         security 
liblua.a 

但是當我嘗試運行它,我得到:

bash-4.3# ./insane 
bash: ./insane: No such file or directory 
+0

當文件不存在此消息發生,不是因爲一個.so丟失。 –

+0

您是否嘗試複製缺少的libc.so.6並使用適當的LD_LIBRARY_PATH設置運行它? – stark

+0

如果你嘗試'/lib/ld-linux.so.2 full/insane/path',會發生什麼? – giusti

回答

0

你錯過了動態加載程序/lib/ld-linux.so.2(由file中指定)。

的錯誤信息是非常混亂的,並且可以通過與十六進制編輯器的頭部修正裝載位置被快速複製(只是搜索ld-linux和垃圾覆蓋它):

$ file myfile 
myfile: ELF 64-bit LSB executable, x86-64, 
     version 1 (SYSV), dynamically linked, 
     interpreter /doesntexistfoobarbaz_.so.2, 
     for GNU/Linux 2.6.32, (...) 

$ [ -x ./myfile ] && ./myfile 
bash: ./myfile: No such file or directory 

您可以運行它通過將在正確的位置正確加載,或者使用其他裝載機明確:

$ /lib64/ld-linux-x86-64.so.2 ./myfile 
Hello World 
+0

我將ld-linux.so.2從工作機器複製到故障機器,現在它給我分段故障。 如果我運行bash-4.3 $ /lib/ld-linux.so.2瘋狂它沒有顯示任何東西。 – QEWR

+0

Ubuntu安裝的其餘部分庫?您通常無法針對一個版本進行編譯並與另一個版本運行。 –

+0

我剛剛嘗試將/ lib/i386-linux-gnu/*複製到有故障的機器上的/ lib /,它仍然是空輸出。 ldd顯示找不到lc.6。 – QEWR

相關問題