不同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执行文件不能执行?
...全文
471 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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版本而另一个没有?
【资源介绍】 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,217

社区成员

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

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