2016-12-05 120 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

相关问题