当前位置:  技术问答>linux和unix

不同Linux系统下同一个可执行文件执行问题

    来源: 互联网  发布时间:2016-02-06

    本文导语:  ==>问题 把A Linux系统上的一个执行文件mytest拷贝B Linux系统上,chmod a+x mytest后执行出现如下问题: bash: ./mytest: 没有那个文件或目录 ==> 用file和ojdump查看mytest如下: >file mytest mytest: ELF 32-bit LSB executable, Intel 803...

==>问题
把A Linux系统上的一个执行文件mytest拷贝B Linux系统上,chmod a+x mytest后执行出现如下问题:
bash: ./mytest: 没有那个文件或目录

==>
用file和ojdump查看mytest如下:
>file mytest
mytest: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), stripped


>objdump -h mytest
mytest:     文件格式 elf32-i386

节:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .interp       00000013  080480f4  080480f4  000000f4  2**0
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
  1 .hash         00000350  08048108  08048108  00000108  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
  2 .dynsym       00000710  08048458  08048458  00000458  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
  3 .dynstr       00000445  08048b68  08048b68  00000b68  2**0
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
  4 .rel.plt      00000308  08048fb0  08048fb0  00000fb0  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
  5 .init         00000004  080492b8  080492b8  000012b8  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  6 .plt          00000620  080492bc  080492bc  000012bc  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  7 .text         00049780  080498dc  080498dc  000018dc  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  8 .fini         00000004  0809305c  0809305c  0004b05c  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  9 .data         00092260  08094060  08094060  0004b060  2**2
                  CONTENTS, ALLOC, LOAD, DATA
 10 .got          00000190  081262c0  081262c0  000dd2c0  2**2
                  CONTENTS, ALLOC, LOAD, DATA
 11 .dynamic      00000080  08126450  08126450  000dd450  2**2
                  CONTENTS, ALLOC, LOAD, DATA
 12 .bss          000029f4  081264d0  081264d0  000dd4d0  2**2
                  ALLOC
 13 .note         0000001c  00000000  00000000  000dd4d0  2**0
                  CONTENTS, READONLY
 14 .comment      00005021  00000000  00000000  000dd570  2**2
                  CONTENTS, READONLY
>objdump -f mytest

mytest:     文件格式 elf32-i386
体系结构:i386,标志 0x00000112:
EXEC_P, HAS_SYMS, D_PAGED
起始地址 0x080498dc


==>
为了一步做比较,我用file和objdump查看B系统上的一个可执行文件new_mytest如下:
>file new_mytest
new_mytest: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.4, dynamically linked (uses shared libs), for GNU/Linux 2.6.4, not stripped

>objdump -h new_mytest


new_mytest:     文件格式 elf32-i386

节:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .interp       00000013  08048154  08048154  00000154  2**0
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
  1 .note.ABI-tag 00000020  08048168  08048168  00000168  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
  2 .note.SuSE    00000018  08048188  08048188  00000188  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
  3 .hash         00000474  080481a0  080481a0  000001a0  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
  4 .dynsym       00000980  08048614  08048614  00000614  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
  5 .dynstr       00000600  08048f94  08048f94  00000f94  2**0
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
  6 .gnu.version  00000130  08049594  08049594  00001594  2**1
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
  7 .gnu.version_r 000000b0  080496c4  080496c4  000016c4  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
  8 .rel.dyn      00000048  08049774  08049774  00001774  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
  9 .rel.plt      00000440  080497bc  080497bc  000017bc  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
 10 .init         00000017  08049bfc  08049bfc  00001bfc  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 11 .plt          00000890  08049c14  08049c14  00001c14  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 12 .text         000cb8ec  0804a4b0  0804a4b0  000024b0  2**4
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 13 .fini         0000001c  08115d9c  08115d9c  000cdd9c  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 14 .rodata       0000816b  08115dc0  08115dc0  000cddc0  2**5
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
 15 .eh_frame_hdr 000031ac  0811df2c  0811df2c  000d5f2c  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
 16 .eh_frame     0000cb84  081210d8  081210d8  000d90d8  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
 17 .gcc_except_table 00007640  0812dc5c  0812dc5c  000e5c5c  2**0
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
 18 .ctors        00000020  08136000  08136000  000ee000  2**2
                  CONTENTS, ALLOC, LOAD, DATA
 19 .dtors        00000008  08136020  08136020  000ee020  2**2
                  CONTENTS, ALLOC, LOAD, DATA
 20 .jcr          00000004  08136028  08136028  000ee028  2**2
                  CONTENTS, ALLOC, LOAD, DATA
 21 .dynamic      00000138  0813602c  0813602c  000ee02c  2**2
                  CONTENTS, ALLOC, LOAD, DATA
 22 .got          00000004  08136164  08136164  000ee164  2**2
                  CONTENTS, ALLOC, LOAD, DATA
 23 .got.plt      0000022c  08136168  08136168  000ee168  2**2
                  CONTENTS, ALLOC, LOAD, DATA
 24 .data         000060d0  081363a0  081363a0  000ee3a0  2**5
                  CONTENTS, ALLOC, LOAD, DATA
 25 .bss          00005a00  0813c480  0813c480  000f4470  2**5
                  ALLOC
 26 .comment      000010d5  00000000  00000000  000f4470  2**0
                  CONTENTS, READONLY
 27 .debug_aranges 00000058  00000000  00000000  000f5548  2**3
                  CONTENTS, READONLY, DEBUGGING
 28 .debug_pubnames 00000025  00000000  00000000  000f55a0  2**0
                  CONTENTS, READONLY, DEBUGGING
 29 .debug_info   00000191  00000000  00000000  000f55c5  2**0
                  CONTENTS, READONLY, DEBUGGING
 30 .debug_abbrev 00000062  00000000  00000000  000f5756  2**0
                  CONTENTS, READONLY, DEBUGGING
 31 .debug_line   00000137  00000000  00000000  000f57b8  2**0
                  CONTENTS, READONLY, DEBUGGING
 32 .debug_str    000000a5  00000000  00000000  000f58ef  2**0
                  CONTENTS, READONLY, DEBUGGING

>objdump -f new_mytest

new_mytest:     文件格式 elf32-i386
体系结构:i386,标志 0x00000112:
EXEC_P, HAS_SYMS, D_PAGED
起始地址 0x0804a4b0

比较两个可执行文件的结果,看不出为什么会出现这个问题。各位CSDN的大虾们帮忙看看是什么问题导致mytest执行文件不能执行?

|
ldd: /lib/ld-linux.so.2 exited with unknown exit code (139)

这样就是缺少共享库了.
正常的
[root@shwhg test]# ldd a.out
        libc.so.6 => /lib/tls/libc.so.6 (0x4eb26000)
        /lib/ld-linux.so.2 (0x4eb0d000)


静态编译的
[root@shwhg test]# ldd a.out
        not a dynamic executable


你在原来的机器上改成静态编译看看.

|
导致不能执行的原因多半是动态库的问题
用ldd看看

|
mytest: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), stripped

new_mytest: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.4, dynamically linked (uses shared libs), for GNU/Linux 2.6.4, not stripped

这能说明什么? 为什么一个有kernel版本而另一个没有?

|
加个.sh后缀,用sh mytest.sh试试

|
也可能是路径的问题,你用绝对路径执行一下.

|
关注

    
 
 

您可能感兴趣的文章:

  • linux下通过crond实现自动执行程序
  • 菜鸟请教:linux 直接执行可执行文件
  • linux下nm命令(显示可执行文件的符号信息)介绍以及常见nm命令用法举例
  • 如何在LINUX中在系统启动后自动执行一个执行一个程序?
  • Linux下指定运行时加载动态库路径及shell下执行程序默认路径
  • linux在脚本执行命令和直接在命令行执行命令有什么区别
  • linux下不使用sudo命令执行docker的操作步骤
  • linux设备驱动执行完__init之后就执行__devinit吗
  • 很菜的问题——Linux(RedHat8)下的齿轮图标程序如何执行,是什么shell命令可以执行它?
  • 请问LINUX7.2下,哪条命令是查看系统上曾经执行过的执行命令?(包括启动以前的)
  • 如何用JAVA执行本机Linux操作系统的可执行文件?一定给分!在线等待!
  • linux shell脚本 linux crond 的一个鲜为人知的错误,单独执行没问题,放到crond 中就执行出错 试问高手们哪个环节出错
  • 入门的问题。在Linux上如何执行一个可以执行的文件?
  • Linux下的执行文件是什么概念,是象Dos里的2进制机器码吗,怎么看一个文件是不是执行文件.
  • linux 中可执行程序执行时./a.out怎么去掉 "./" ? ? ?
  • 我需要一个模型,在 LINUX C 下。实现线程间的控制,执行,阻塞,再执行。。。。。不知道如何实现。
  • Linux下自动执行命令的问题,哪位Linux高手帮帮我.
  • 小弟刚学linux,问个超级幼稚的问题~-linux下怎么执行程序?
  • 可以让soleris下编译的可执行文件运行在linux下吗???
  • window下通过ftp执行linux脚本?
  • linux 下子线程不能执行的问题?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Linux_centos_redhat下tar命令解压tgz文件方法
  • 用java读中文linux中的文件是正确的,用java读英文linux版本中的文件是乱码,如何使英文linux读出的文件数据也是中文的?
  • Linux下c函数dlopen实现加载动态库so文件代码举例
  • Linux查找包含指定文字的文件(linux查找指定文件)
  • mount命令(linux操作系统)挂载卸载文件系统(cifs,光驱,nfs等)方法介绍
  • 请问LINUX内核下,哪些文件夹下的文件是跟LINUX的硬件平台无关的?
  • linux内存文件系统ramfs实现原理
  • 请问各位linux开发大虾,linux下有类似VC中depends的工具可以查看文件调用了哪些so文件吗?
  • linux/Centos/ubuntu下如何使用umask命令修改新建文件时的默认权限
  • 急::在Linux下怎么根据另一台windows或linux的文件名,去得到这个文件
  • Linux内存文件系统(ramdisk)的三种实现方式
  • 我的机器装了WINDOWS2000 和 LINUX 7.3 , 请问在LINUX 中如何访问`WIN2K中的文件?同样在WIN2K中如何访问LINUX 中的文件?
  • 根据文件大小查找文件的find命令举例(Linux,centos,redhat)
  • 请问如何在WINDOWS中访问linux下的文件,并把Windows下的文件复制到linux下的分区中
  • Linux下glibc库文件锁:协同锁(advisory lock)和强制锁(mandatory lock)
  • linux下copy文件通常又些文件名的大小写会发生变化的,而linux又对大小写敏感,如何解决这一问题
  • Linux下u盘文件系统相关操作
  • Redhat Linux下用c怎么可以知道一个文件是文件夹还是真的文件?
  • linux下find查找文件命令详细介绍及find文件用法举例说明
  • [提问]Linux下如何把多个.a文件编译一个.so文件,或者把多个.so文件编译成一个.so文件
  • Linux系统命令:find(文件查找命令)介绍及用法示例
  • linux中对文件排序的命令(文件夹中包含子文件)
  • linux c/c++ IP字符串转换成可比较大小的数字
  • 在win分区上安装linux和独立分区安装linux有什么区别?可以同时安装吗?(两个linux系统)
  • linux哪个版本好?linux操作系统版本详细介绍及选择方案推荐
  • 在虚拟机上安装的linux上,能像真的linux系统一样开发linux程序么?
  • secureCRT下Linux终端汉字乱码解决方法
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在有linux的盘)
  • Linux c字符串中不可打印字符转换成16进制
  • 安装vmware软件,不用再安装linux系统,就可以模拟linux系统了,然后可以在其上学习一下LINUX下的基本操作 了?
  • Linux常用命令介绍:更改所属用户群组或档案属性


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3