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

fjpqzm 2007-08-09 10:49:35
==>问题
把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执行文件不能执行?
...全文
427 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
fjpqzm 2007-08-20
  • 打赏
  • 举报
回复
虽然经过各位大虾们的建议,这个问题还是没有解决,但是还是谢谢大家!
fjpqzm 2007-08-10
  • 打赏
  • 举报
回复
我原来的机子坏了,没办法重新弄过
fjpqzm 2007-08-09
  • 打赏
  • 举报
回复
1.我这个是elf文件,不是sh脚本
2.用绝对路径也不行,还是出现没有那个文件或目录问题
3.用ldd查看结果如下
ldd: /lib/ld-linux.so.2 exited with unknown exit code (139)
好像有点眉目,可是我不知到是什么问题?
maoxianqu 2007-08-09
  • 打赏
  • 举报
回复
关注
cceczjxy 2007-08-09
  • 打赏
  • 举报
回复
也可能是路径的问题,你用绝对路径执行一下.
lurenfu 2007-08-09
  • 打赏
  • 举报
回复
导致不能执行的原因多半是动态库的问题
用ldd看看
k_f 2007-08-09
  • 打赏
  • 举报
回复
加个.sh后缀,用sh mytest.sh试试
cceczjxy 2007-08-09
  • 打赏
  • 举报
回复
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


你在原来的机器上改成静态编译看看.
dai_weitao 2007-08-09
  • 打赏
  • 举报
回复
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版本而另一个没有?
一些简单的linux操作以及入门第一部分:安装系统 1.安装VMware 12.5,用安装包。 运行VMware-workstation-full-12.5.5-5234757,点击创建一个虚拟机。 2.安装ubuntu(linux12.04)虚拟机,用光盘镜像。 3.打开ubuntu12.04,点击“虚拟机”安装VMware tools.。 4.将VMwareTools-10.1.6-5214329.tar.gz 复制到主文件夹下。 5.进入主文件夹,将VMwareTools-10.1.6-5214329.tar.gz解压到此处。 6.在命令行模式,进入家目录,输入sudo ~/vmware-tools-distrib/vmware-install.pl,并回车执行执行过程中,不管终端提示什么,一律按回车键,直到命令符$再次出现。所谓家目录,是home目录下的用户目录,不是home目录,可以用$HOME来表示。家目录,是用户的工作目录,是不需要授权可以就任意操作的目录。 7.进入虚拟机设置界面,按option,点击share folders,点击always enable,在下面的空白格内添加一个共享目录,即可。 测试目录能否共享。查看文件系统的mnt目录下的文件系统,是不是共享的windows下的文件系统,测试互拷,测试文件拖动。 第二部分:安装samba及其它软件 1、配置网络。NAT模式(有网无网均可)或bridge模式(有网,至少要有路由器)。 2、安装samba。网络安装。($是命令提示符,不输入,下同)    $sudo apt-get install samba smbfs smbclient system-config-samba 3、通过dash,找samba.   双击samba,配置samba,添加家目录为共享文件夹。 4、安装SSH。网络安装 5、$ sudo apt-get install openssh-server。 6、$ sudo service ssh restart。重启ssh. 7、Windows下,安装xshell。本地软件安装。 8、Windows下,安装notpad++。本地软件安装。 9、Linux下,安装tree,网络安装。 10、$ sudo apt-get install tree;安装tree命令。 11、$ sudo apt-get install ibus-table-wubi;安装五笔输入法。 12、测试目录能不能互访,通过windows命令行运行,\\IP地址,访问虚拟机。
【资源介绍】 Javaweb课程作业基于Hadoop的中文词频统计工具源码+使用说明.zip 一、Linux下配置hadoop集群(伪分布式或完全分布式) 1、https://blog.csdn.net/z1148059382/article/details/89459182 2、Windows下管理HDFS的神器:HDFS Explorer 二、在Windows环境下通过IDEA远程连接Linux里的Hadoop并运行MapReduce程序 1、下载winutils.exe和hadoop.dll https://github.com/steveloughran/winutils 2、将hadoop.dll放到C:\windows\System32里 3、将hadoop-2.7.7.tar.gz(二进制包)解压到Windows的E:\里 4、将winutils.exe放到E:\hadoop-2.7.7\bin里 5、将Linux里配置好的hadoop的配置文件目录里的log4j.properties和core-site.xml复制到项目根目录(IDEA的maven项目的话是放到resources目录里,下同) 6、往HDFS里/user/joe/wordcount/input传要统计的文件(不要创建output文件夹) 7、执行程序 三、中文分词能力(使用IKAnalyzer分词器) 1、下载IKAnalyzer2012_u6.zip(最新版) https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/ik-analyzer/IKAnalyzer2012_u6.zip 2、由于maven库里没有ik的坐标,所以我们需要手动将IKAnalyzer2012_u6.zip里的jar包添加到本地Maven仓库里(也可以直接引入到项目的外部jar包库中) (1)cmd,进入放置jar的文件夹 (2)mvn install:install-file -DgroupId=org.wltea.ik-analyzer -DartifactId=ik-analyzer -Dversion=2012_u6 -Dpackaging=jar -Dfile=IKAnalyzer2012_u6.jar (3)在项目的pom.xml里用以下内容引入依赖: org.wltea.ik-analyzer ik-analyzer 2012_u6 org.apache.lucene lucene-core 3.6.0 3、将IKAnalyzer.cfg.xml和stopword.dic复制到项目根目录 4、配置用户自定义词库 (1)项目根目录下创建MyDic.dic,在里边打单词,一行一个 (2)修改IKAnalyzer.cfg.xml MyDic.dic; 【备注】 该项目是个人毕设/课设/大作业项目,代码都经过本地调试测试,功能ok才上传,高分作品,可快速上手运行!欢迎下载使用,可用于小白学习、进阶。 该资源主要针对计算机、通信、人工智能、自动化等相关专业的学生、老师或从业者下载使用,亦可作为期末课程设计、课程大作业、毕业设计等。 项目整体具有较高的学习借鉴价值!基础能力强的可以在此基础上修改调整,以实现不同的功能。 欢迎下载使用,也欢迎交流学习~

23,120

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧