当前位置: 首页 > news >正文 西安响应式网站建设公司怎样在网站上做链接 news 2025/10/22 16:10:08 西安响应式网站建设公司,怎样在网站上做链接,wordpress 快递插件,淮阴区城乡建设管理局网站其实是想搞嵌入式的#xff0c;但是总是要补补这里的知识补点那里的知识 1.ELF的分类 现在PC平台流行的可执行文件格式#xff08;Executable#xff09;主要是Windows下的PE和Linux的ELF#xff0c;他们都是COFF格式的变种 ELF文件标准里面把系统中采用ELF格式的文件归为… 其实是想搞嵌入式的但是总是要补补这里的知识补点那里的知识 1.ELF的分类 现在PC平台流行的可执行文件格式Executable主要是Windows下的PE和Linux的ELF他们都是COFF格式的变种 ELF文件标准里面把系统中采用ELF格式的文件归为以下4类 ELF文件类型说明实例可重定位文件Relocatable这类文件包含了代码和数据可以用来链接成可执行文件或共享目标文件静态链接库也属于这一类Linux的.o Windows的.obj可执行文件Executable这类文件包含了可以直接执行的程序它的代表就是ELF可执行文件一般没有扩展名比如/bin/bash文件 Windows的.exe共享目标文件Shared Object File这种文件包含了代码和数据 可以在以下两种情况下使用。一种是链接器可以使用这种文件跟其他的可重定位文件和共享目标文件链接产生新的目标文件。第二种是动态连接器可以将几个这种共享目标文件与可执行文件结合作为进程映像的一部分Linux的.so windows的DLL核心转储文件Core dump file当进程意外终止时系统可以将该进程的地址空间的内容及终止时的一些其他信息转储到核心转储文件linux下的Core dump 在linux下可以使用file命令来查看 2.ELF 文件的总体结构大概是这样的 ELF 文件头 位于最前端它包含了整个文件的基本属性如文件版本目标机器型号程序入口等等。 .text 为代码段也是反汇编处理的部分他们是以机器码的形式存储没有反汇编的过程基本不会有人读懂这些二进制代码的。 .data 数据段保存的那些已经初始化了的全局静态变量和局部静态变量。 .bss 段 存放的是未初始化的全局变量和局部静态变量这个很容易理解因为在未初始化的情况下我们单独用一个段来保存可以不在一开始就分配空间而是在最终连接成可执行文件的时候再在.bss 段分配空间。 其他段 还有一些可选的段比如.rodata 表示这里存储只读数据 .debug 表示调试信息等等具体遇到可以查看相关文档。 自定义段这一块是为了实现用户特殊功能而存在的段方便扩展比如我们使用全局变量或者函数之前加上 attribute(section(‘name’)) 就可以吧变量或者函数放到以name 作为段名的段中。 段表Section Header Table 是一个重要的部分它描述了ELF 文件包含的所有段的信息比如每个段的段名段长度在文件中的偏移读写权限和一些段的其他属性。 ELF目标文件格式的最前端是ELF文件头包含了描述整个文件的基本属性比如ELF文件版本、目标机器型号、程序入口地址。紧接着的就是ELF文件各个段。其中ELF文件中与段有关的重要结构就是段表。段表描述的是ELF文件包含的所有段的信息比如每个段的段名、段的长度、在文件中的偏移、读写权限以及段的其他属性。 分段的好处 1.其实数据和指令分段的好处有很多一方面是当程序被装载后数据和指令被分别映射到两个虚存。由于数据区域对于进程来说是可读写的而指令区域对于进程来说是只读的所以这两个虚存区域的权限可以被分别设置成可读写和只读。这样可以防止程序的指令被有意或无意的改写。 2.对于现代cpu来说它们有着极为强大的缓存体系现代CPU的缓存一般都被设计成数据缓存和指令缓存分离所以程序的指令和数据被分开存放对CPU的缓存命中率的提高有好处。 3.当系统中运行多个该程序的副本的时候由于指令都是一样的所以内存中只要保存一份该程序的指令。比如说很多程序的带的图标、文本、资源都可以共享。在现代操作系统中尤其是动态链接的系统中节省了大量的内存。 2.1文件头 以64位版本的文件头结构Elf64_Ehdr为例 85 typedef struct86 {87 unsigned char e_ident[EI_NIDENT]; /* 有6个值分别代表不同的含义*/88 Elf64_Half e_type; /* ELF文件类型REL */89 Elf64_Half e_machine; /* cpu平台*/90 Elf64_Word e_version; /* ELF版本号一般为1 */91 Elf64_Addr e_entry; /*入口地址规定ELF程序的入口虚拟地址操作系统在加载完该程序后从这个地址开始执行进程的指令。可重定位文件一般没有入口地址则这个值为0*/92 Elf64_Off e_phoff; /* Program header table file offset */93 Elf64_Off e_shoff; /* 段表在文件中的偏移从下一个字节开始 */94 Elf64_Word e_flags; /*ELF标志位用来标识一些ELF文件平台相关属性相关常量的格式一般为EF_machine_flag*/95 Elf64_Half e_ehsize; /* ELF文件头大小 */96 Elf64_Half e_phentsize; /* Program header table entry size */97 Elf64_Half e_phnum; /* Program header table entry count */98 Elf64_Half e_shentsize; /*段表描述符大小等于sizeof(Elf64_Shdr) */99 Elf64_Half e_shnum; /* 段表描述符数量这个值等于ELF文件中拥有的段的数量 */100 Elf64_Half e_shstrndx; /* 段表字符串所在的段在段表中的下标 */101 } Elf64_Ehdr;要注意的是e_ident数组包含了6个成员Magic、类别、数据、版本、OS/ABI、ABI版本 Magic中的16个字节被ELF标准规定用来标识ELF文件的平台属性比如ELF字长32位/64位、字节序、ELF文件版本 最开始的4个字节 是所有ELF文件都必须相同的标识码分别为0x7f 0x45 0x4c 0x46,第一个字节对应ASCII字符里面的DEL控制符、后面3个字节 是ELF这三个字母的ASCII码这4个字节被称为魔数。第5个字节 标识ELF的文件类0x01表示32位0x02表示64位第6位 规定ELF文件是大端的还是小端的。第7个字节 规定了ELF文件的主版本号一般是1 2.2 段表 段表就是保存段的一些基本属性描述了段的段名、段的长度、在文件中的偏移、读写权限以及其他属性。ELF文件的段结构是由段表决定的编译器、链接器和装载器都是依靠段表来定位和访问各个段的属性的。段表在文件中的位置由ELF文件头的e_shoff成员决定。 下面是段描述符结构 287 typedef struct288 {289 Elf64_Word sh_name; /* 段名*/290 Elf64_Word sh_type; /* 段类型 */291 Elf64_Xword sh_flags; /* 段标志位*/292 Elf64_Addr sh_addr; /* 段虚拟地址 */293 Elf64_Off sh_offset; /* 段偏移 */294 Elf64_Xword sh_size; /* 段的长度 */295 Elf64_Word sh_link; /* 段的链接信息 */296 Elf64_Word sh_info; /* 段的链接信息*/297 Elf64_Xword sh_addralign; /* 段地址对齐 */298 Elf64_Xword sh_entsize; /* 项长度 */299 } Elf64_Shdr;后记段的名字对于编译器链接器来说是有意义的但是对于操作系统来说并没有实质的意义对于操作系统来说一个段如何处理取决于它的属性和权限也就是段的类型和段的标志位这两个成员决定。 test.o段表结构 将test的所有段的位置和长度信息分析如下空白处代表字节对齐因为Section Table的长度为0x340也就是832个字节它包含了13个段描述符每个段描述符为64个字节。 整个文件的结尾是Section Table总长度为0x730也就是1840个字节也刚好是test.o的文件长度。 通过验证也确实是1840字节。 2.3 相关参数介绍 在段的结构体中 段的类型sh_type 段的名字只是在链接和编译过程中有意义但是不能真正地表示段的类型。对于编译器和链接器来说主要决定段的属性的是段的类型sh_type和段的标志位sh_flags列举如下表 段的标志位sh_flag 段的标志位表示该段在进程虚拟地址空间中的属性比如是否可写、是否可执行 对于系统中的保留段下表也列举了段的类型和段的标志位属性可以通过readelf -S test.o命令得到的属性进行对照 段的链接信息sh_link、sh_info 如果段的类型是与链接相关的不论是动态链接还是静态链接比如重定位表、符号表等那么sh_link和sh_info这两个成员所包含的意义如下表所示对于其他类型的段这两个成员没有意义 3.重定位表 这个也就是test.o中有一个叫做.rela.text的段和.rela.eh_frame的段他们的类型都是SHT_RELA其他的段类型含义可以到 /usr/include/elf.h 中查看意思是带有添加项的重定位项也就是说它是一个重定位表。也就是链接器在处理目标文件的时候要对一些目标文件中某些部位进行重定位。关于重定位可以看hello.程序的编译过程 关于这里我想说的是关于eh_frame段和rela.eh_frame段查了很多资料目前还不知道存了什么是什么意思。 一个重定位表同时也是一个ELF段那么这个段的类型就是sh_type就是SHT_RELA类型它的sh_link表示符号表的下表它的sh_info表示它作用于哪个段。比如.rela.text作用于.text段而.text段的下标为1那么.rela.text的sh_info为1。 ELF和bin的区别 Gcc 编译出来的是ELF文件。通常gcc –o test test.c,生成的test文件就是ELF格式的在linuxshell下输入 ./test就可以执行。 Bin 文件是经过压缩的可执行文件去掉ELF格式的东西。是直接的内存映像的表示。在系统没有加载操作系统的时候可以执行。 elfexecutable and link format文件里面包含了符号表汇编等。 BIN文件是将elf文件中的代码段数据段还有一些自定义的段抽取出来做成的一个内存的镜像。 在Embedded中如果上电开始运行没有OS系统如果将ELF格式的文件烧写进去包含一些ELF格式的东西arm运行碰到这些指令就会导致失败如果用arm-softfloat-linux-gnu-objcopy生成纯粹的汇编 bin文件程序就可以一步一步运行。 文章转载自: http://www.morning.dtnzk.cn.gov.cn.dtnzk.cn http://www.morning.pbknh.cn.gov.cn.pbknh.cn http://www.morning.hdwjb.cn.gov.cn.hdwjb.cn http://www.morning.mtmph.cn.gov.cn.mtmph.cn http://www.morning.zqfjn.cn.gov.cn.zqfjn.cn http://www.morning.zkpwk.cn.gov.cn.zkpwk.cn http://www.morning.srrzb.cn.gov.cn.srrzb.cn http://www.morning.rongxiaoman.com.gov.cn.rongxiaoman.com http://www.morning.hgscb.cn.gov.cn.hgscb.cn http://www.morning.chjnb.cn.gov.cn.chjnb.cn http://www.morning.tqrjj.cn.gov.cn.tqrjj.cn http://www.morning.kjfqf.cn.gov.cn.kjfqf.cn http://www.morning.mbbgk.com.gov.cn.mbbgk.com http://www.morning.wptrm.cn.gov.cn.wptrm.cn http://www.morning.ygqjn.cn.gov.cn.ygqjn.cn http://www.morning.hmtft.cn.gov.cn.hmtft.cn http://www.morning.mjmtm.cn.gov.cn.mjmtm.cn http://www.morning.qnklx.cn.gov.cn.qnklx.cn http://www.morning.kjxgc.cn.gov.cn.kjxgc.cn http://www.morning.znkls.cn.gov.cn.znkls.cn http://www.morning.divocn.com.gov.cn.divocn.com http://www.morning.qxlhj.cn.gov.cn.qxlhj.cn http://www.morning.pyzt.cn.gov.cn.pyzt.cn http://www.morning.xmwdt.cn.gov.cn.xmwdt.cn http://www.morning.lsxabc.com.gov.cn.lsxabc.com http://www.morning.wrbnh.cn.gov.cn.wrbnh.cn http://www.morning.nzsx.cn.gov.cn.nzsx.cn http://www.morning.bkkgt.cn.gov.cn.bkkgt.cn http://www.morning.kqglp.cn.gov.cn.kqglp.cn http://www.morning.bzfwn.cn.gov.cn.bzfwn.cn http://www.morning.klwxh.cn.gov.cn.klwxh.cn http://www.morning.lkbyj.cn.gov.cn.lkbyj.cn http://www.morning.qkrqt.cn.gov.cn.qkrqt.cn http://www.morning.gjlxn.cn.gov.cn.gjlxn.cn http://www.morning.plqqn.cn.gov.cn.plqqn.cn http://www.morning.dzrcj.cn.gov.cn.dzrcj.cn http://www.morning.nkqrq.cn.gov.cn.nkqrq.cn http://www.morning.xkjqg.cn.gov.cn.xkjqg.cn http://www.morning.nlygm.cn.gov.cn.nlygm.cn http://www.morning.sthgm.cn.gov.cn.sthgm.cn http://www.morning.tplht.cn.gov.cn.tplht.cn http://www.morning.fbjqq.cn.gov.cn.fbjqq.cn http://www.morning.kpnpd.cn.gov.cn.kpnpd.cn http://www.morning.xnflx.cn.gov.cn.xnflx.cn http://www.morning.kwhrq.cn.gov.cn.kwhrq.cn http://www.morning.rwjfs.cn.gov.cn.rwjfs.cn http://www.morning.ykrss.cn.gov.cn.ykrss.cn http://www.morning.bhmnp.cn.gov.cn.bhmnp.cn http://www.morning.yqpck.cn.gov.cn.yqpck.cn http://www.morning.cltrx.cn.gov.cn.cltrx.cn http://www.morning.rfwqt.cn.gov.cn.rfwqt.cn http://www.morning.wmglg.cn.gov.cn.wmglg.cn http://www.morning.tkgxg.cn.gov.cn.tkgxg.cn http://www.morning.fwzjs.cn.gov.cn.fwzjs.cn http://www.morning.tygn.cn.gov.cn.tygn.cn http://www.morning.krswn.cn.gov.cn.krswn.cn http://www.morning.saletj.com.gov.cn.saletj.com http://www.morning.dnydy.cn.gov.cn.dnydy.cn http://www.morning.yjfmj.cn.gov.cn.yjfmj.cn http://www.morning.drtgt.cn.gov.cn.drtgt.cn http://www.morning.hbnwr.cn.gov.cn.hbnwr.cn http://www.morning.lxmks.cn.gov.cn.lxmks.cn http://www.morning.bylzr.cn.gov.cn.bylzr.cn http://www.morning.sgrwd.cn.gov.cn.sgrwd.cn http://www.morning.hnzrl.cn.gov.cn.hnzrl.cn http://www.morning.kstlm.cn.gov.cn.kstlm.cn http://www.morning.mflhr.cn.gov.cn.mflhr.cn http://www.morning.fkgct.cn.gov.cn.fkgct.cn http://www.morning.dwmmf.cn.gov.cn.dwmmf.cn http://www.morning.jytrb.cn.gov.cn.jytrb.cn http://www.morning.bpknt.cn.gov.cn.bpknt.cn http://www.morning.ndmbz.cn.gov.cn.ndmbz.cn http://www.morning.jwtwf.cn.gov.cn.jwtwf.cn http://www.morning.jbshh.cn.gov.cn.jbshh.cn http://www.morning.clgbb.cn.gov.cn.clgbb.cn http://www.morning.tqjks.cn.gov.cn.tqjks.cn http://www.morning.jfbbq.cn.gov.cn.jfbbq.cn http://www.morning.hpdpp.cn.gov.cn.hpdpp.cn http://www.morning.nbybb.cn.gov.cn.nbybb.cn http://www.morning.zdwjg.cn.gov.cn.zdwjg.cn 查看全文 http://www.tj-hxxt.cn/news/240101.html 相关文章: php网站开发视频网络公司取名字参考大全 佛山网站建设公司价格多少学计算机能做什么工作 做平面设计在那个网站上找图好桂林房价 网站 实施wordpress手机双模板下载地址 网页制作网站制作营销推广的形式包括 北湖区网站建设公司wordpress页面添加照片 中国十大搜索引擎排名最新大连网站优化方案 jsp免费建站系统做打折网站如何 wordpress开启子目录多站点模式怎么查网站开发者联系方式 php mysql网站开发全程实例pdf做女装网站应怎么定位 wordpress中英文建站网站建设做网站 苏州网站建设点一点现在做推广有什么好的方法 游戏网站建设的策划多用户分布式网站开发 做网站架构公司形象墙效果图 江苏建站管理系统开发网站建设的电销 网站系统中备案申请表市政建设招标网站有哪些 响应式布局设计什么网站做外链优化好 哪个网站可以做签证又做投资的网站吗 开发一个app的资质要求南宁百度首页优化 企业网站开发用什么好做g3云推广需要网站 软件下载网站如何履行安全管理义务确保提供的软件免费秒玩小游戏 微信商城和微网站建设西安网站制作公司花禾科技 济南网站建设q.479185700惠wordpress 社交链接 学校网站的建设目标国家卫生资格考试官网 莆田外贸网站建设wordpress文章cms模板 网站后台程序开发教程wordpress七牛云图床 野马视觉传媒网站建设广西桂平建设局网站 淄博网站制作营销怎么建设阿里巴巴国际网站首页 电商网站cms武功县住房和城乡建设局网站 邵阳网站建设制作公众号开发公司排行榜