千赢娱乐手机登录_ qy8com千赢手机版_千赢网页手机版
做最好的网站

千赢娱乐手机登录

当前位置:千赢娱乐手机登录 > 千赢娱乐手机登录 > Linux之ELF魔数解析,Ubuntu下Python版本更新问题

Linux之ELF魔数解析,Ubuntu下Python版本更新问题

来源:http://www.modeLspro.net 作者:千赢娱乐手机登录 时间:2019-07-12 17:49

Linux/Uix dd命令是一个非常好的管理磁盘命令

在Linux系统下,我们通常可以使用readelf命令来查看ELF文件信息。例如:

永远不要删除/usr/bin下系统默认的python!!!切记!

dd命令作用:指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换,起到一个初始化磁盘的作用

图片 1

使用的是Ubuntu 10.04 LTS版本,其中自带Python为2.6.5。前几天一时手痒,把Python升级为了2.7.3。

dd指令选项详解

ELF文件有32位版本以及64版本之分,32位版本的结构体信息如下:

# ./configure --prefix=/usr/local/python2.7
# make
# make install

if=file -->输入文件名,缺省为标准输入

图片 2

# cd /usr/bin
# ln -sf /usr/local/bin/python python

of=file -->输出文件名,缺省为标准输出

上面这些结构跟刚才输出的kill0这个文件的elf信息基本一一对应,不同的是,Elf32_Ehdr中的e_ident对应了readelf输出中的“Class”,"Data","Version","OS/ABI","ABI Version"。

一切顺利哇,没有任何问题哇!
但是,但是,我做了万恶的一步

ibs=bytes -->一次读入bytes个字节(即一个块大小为 bytes 个字节)

而我们所要说的ELF魔数指的就是第一幅图中画线的数字。

ln -sf /usr/local/bin/python python2.6

obs=bytes-->一次写bytes个字节(即一个块大小为 bytes 个字节)

最开始的四个字节是所有ELF文件都必须相同的标识符,分别为0x7F,0x45,0x4c,0x46,第一个字节对应ASCII字符里面的DEL控制符,后面三个字节刚好是ELF这三个字节的ASCII码。这四个字节称为ELF的魔数。几乎所有的可执行文件格式的最开始的几个字节都是魔数。这种魔数用来确认文件的类型,操作系统在加载可执行文件的时候会确认魔数是否正确。

就是这样的一步哇,把我推上了不归路,系统各种功能无法使用了,比如Ubuntu软件中心。apt-get upgrade也会出现问题,提示python版本不符,改为默认版本。但是我已经把python2.6给覆盖删除了。

bs=bytes-->同时设置读写块的大小为 bytes,可代替 ibs 和obs

图片 3

我以为换成2.6就行了,下载了2.6.8,2.6.5编译安装都不行,看来只能去找原来的python2.6,也幸好我原来安装过10.04的虚拟机,从上面拷贝了一份才解决了问题。

cbs=bytes-->一次转换bytes个字节,即转换缓冲区大小

所以再次提醒大家,不要删除/usr/bin下的pythonx.x,永远不要动它!最好将其备份一下。

skip=blocks-->从输入文件开头跳过 blocks个块后再开始复制

//~End~

seek=blocks-->从输出文件开头跳过 blocks个块后再开始复制。(通常只有当输出文件是磁盘或磁带时才有效)

图片 4

count=blocks-->仅拷贝blocks个块,块大小等于 ibs 指定的字节数

本文由千赢娱乐手机登录发布于千赢娱乐手机登录,转载请注明出处:Linux之ELF魔数解析,Ubuntu下Python版本更新问题

关键词: qy8千亿国际