lseek illegal seek不能使用 linux 串口,linux – 如何获取有关不执行的二进制文件的信息?...

当我运行一个名为“myfile”的用户应用程序时.

$./myfile

我收到以下输出

bash: ./myfile: cannot execute binary file

我的用户希望运行二进制文件.我认为这是一个编译错误,但无法确认.我运行了文件命令

$file myfile

myfile: ELF 64-bit LSB relocatable,x86-64,version 1 (SYSV),not stripped

我的RHEL6操作系统是64位的

$uname -p -o

x86_64 GNU/Linux

因此,我认为它符合正确的架构.我不明白文件命令的输出中“可重定位”是什么意思,并且无法从手册页中获得解释.

为了更好的衡量,我检查了共享库依赖项

$ldd myfile

not a dynamic executable

有没有什么方法可以让我的文件运行或给我的用户一些有关它不会运行的建设性信息(例如他需要使用x重新编译)?

strace的

$strace ./myfile

execve("./myfile",["./myfile"],[/* 22 vars */]) = -1 ENOEXEC (Exec format error)

dup(2) = 3

fcntl(3,F_GETFL) = 0x8002 (flags O_RDWR|O_LARGEFILE)

fstat(3,{st_mode=S_IFCHR|0620,st_rdev=makedev(136,0),...}) = 0

mmap(NULL,4096,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANONYMOUS,-1,0) = 0x7f7a9fc93000

lseek(3,SEEK_CUR) = -1 ESPIPE (Illegal seek)

write(3,"strace: exec: Exec format error\n",32strace: exec: Exec format error

) = 32

close(3) = 0

munmap(0x7f7a9fc93000,4096) = 0

exit_group(1) = ?

readelf输出

readelf -S ./myfile There are 13 section headers,starting at offset 0x1e8:

Section Headers:

[Nr] Name Type Address Offset

Size EntSize Flags Link Info Align

[ 0] NULL 0000000000000000 00000000

0000000000000000 0000000000000000 0 0 0

[ 1] .text PROGBITS 0000000000000000 00000040

0000000000000098 0000000000000000 AX 0 0 4

[ 2] .rela.text RELA 0000000000000000 000006e0

0000000000000120 0000000000000018 11 1 8

[ 3] .data PROGBITS 0000000000000000 000000d8

0000000000000010 0000000000000000 WA 0 0 4

[ 4] .bss NOBITS 0000000000000000 000000e8

0000000000000000 0000000000000000 WA 0 0 4

[ 5] .rodata PROGBITS 0000000000000000 000000e8

0000000000000033 0000000000000000 A 0 0 1

[ 6] .comment PROGBITS 0000000000000000 0000011b

000000000000002d 0000000000000001 MS 0 0 1

[ 7] .note.GNU-stack PROGBITS 0000000000000000 00000148

0000000000000000 0000000000000000 0 0 1

[ 8] .eh_frame PROGBITS 0000000000000000 00000148

0000000000000038 0000000000000000 A 0 0 8

[ 9] .rela.eh_frame RELA 0000000000000000 00000800

0000000000000018 0000000000000018 11 8 8

[10] .shstrtab STRTAB 0000000000000000 00000180

0000000000000061 0000000000000000 0 0 1

[11] .symtab SYMTAB 0000000000000000 00000528

0000000000000180 0000000000000018 12 9 8

[12] .strtab STRTAB 0000000000000000 000006a8

0000000000000037 0000000000000000 0 0 1

Key to Flags:

W (write),A (alloc),X (execute),M (merge),S (strings)

I (info),L (link order),G (group),x (unknown)

O (extra OS processing required) o (OS specific),p (processor specific)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值