对象文件格式分析
WIS测井数据中流对象解析及格式转换

石油地质与工程2021年5月PETROLEUM GEOLOGY AND ENGINEERING 第35卷第3期文章编号:1673–8217(2021)03–0041–03WIS测井数据中流对象解析及格式转换彭博1,2,谭成仟1,2,张奔1,2,孙遥1,2,杨泽1,2(1.西安石油大学地球科学与工程学院,陕西西安710065;2.陕西省油气成藏地质学重点实验室,陕西西安710065)摘要:为了解决Forward测井解释平台中的测井格式转换器不能从WIS数据文件中批量获取解释成果表,且手动获取后只能保存为ASCII格式文档,不利于获取层位、起始深度、终止深度、解释结论、特征数值及相应的曲线数据等问题,通过分析WIS数据文件的数据格式,利用Visual Basic 6.0语言编写了一款软件,能够实现从多个WIS文件中批量获取解释成果表,并将ASCII格式的解释成果表转换为EXCEL格式,同时可将所有井的解释成果表保存到一张EXCEL表格中。
此软件极大地方便了科研工作者,能显著缩短项目的开发周期、节省人力和时间、提高数据处理的正确率。
关键词:WIS数据;Forward;流对象;测井数据;格式转换;Visual Basic 6.0中图分类号:P631.84 文献标识码:AStream object analysis and format conversion in WIS data of well loggingPENG Bo1, 2, TAN Chengqian1, 2, ZHANG Ben1, 2, SUN Yao1, 2, YANG Ze1, 2(1. School of Earth Sciences and Engineering, Xi'an Shiyou University, Xi'an, Shaanxi 710065, China; 2. Key Laboratory of Oil and Gas Accumulation Geology in Shaanxi Province, Xi'an, Shaanxi 710065, China) Abstract: Acquiring the interpretation result table from WIS data file with the format converter in Forward logging interpretation platform, every time it can only manually form a WIS file parsing out the interpretation result table, each well is corresponded to an ASCII format document, the data format in the document is not conducive to obtain horizon, starting depth, ending depth, interpretation conclusion, average characteristic value and corresponding curve data. In order to solve the problem, after analyzing how WIS format data is stored, writer wrote a software with Visual Basic 6.0 for explaining results tables from multiple WIS files, the ASCII format of the results tables is converted to the EXCEL format, the interpretation results in EXCEL format for all wells are saved in an EXCEL spreadsheet. This software can shorten the project development cycle, save manpower and time, and improve the accuracy of data processing.Key words: WIS data; Forward; stream object; logging data; format conversion; Visual Basic 6.0Forward平台采用WellBase(Well Basic Analysis System Environment)作为数据底层,即WIS数据,国内大量的测井数据以WIS格式存放、处理和解释。
PDF的文件结构及格式特点

PDF的文件结构及格式特点PDF的文件结构及格式特点2010-04-15 12:50PDF(Portable Document Format)由Adobe公司所开发,是一种不论用何种类型的计算机均可阅读的文件格式。
PDF文件包含一个PDF文档和其它支持数据。
一个PDF文档包含一个或多个页面,每个页面包含与设备和分辨率无关的文字、图形和图像的任意组合,被称为页面描述。
文档还可以包含一些只有在电子读物中才存在的信息,如超文本链接、声音和动画等。
除了PDF文档之外,PDF文件中还包含一些其它信息,如:文件中使用的PDF规范的版本号,文件中重要结构的位置。
为了更好地理解PDF文件,可把PDF文件分解成四个部分。
第一部分是PDF的对象,PDF 的对象是一组基本对象类型。
这些类型绝大部分与Posts cript语言使用的数据类型对应。
PDF支持很多种基本的数据类型:布尔型、数字、字符串、字面名、数组、字典和流,另外还有一种空对象。
在PDF文件中,经常给一些对象赋予一个标签供其它对象调用,这种有标签的对象称为间接对象。
第二部分是PDF的文件结构。
PDF的文件结构决定了对象在PDF文件中的存储方式、访问方式和更新方式。
后面将详细分析。
第三部分是PDF的文档结构。
PDF的文档结构指定了怎样用基本对象类型来表示PDF的文档成分,包括:页面、注解、超文本链接、字体等。
第四部分是PDF的页面描述。
页面描述指的是页面上包含的与设备和分辨率无关的文字、图形和图像的任意组合。
PDF的页面描述可不依赖于PDF的其它部分而被单独地解释。
1、PDF的文件结构PDF的文件结构(即物理结构)包括四个部分:文件头、文件体、交叉引用表和文件尾。
文件头指明了该文件所遵从的PDF规范的版本号。
它出现在PDF文件的第一行。
如%PDF-1.2,表示该文件符合PDF-1.2规范。
文件体由一系列的PDF间接对象(inDirectob Ject)组成。
编程调试常用文件格式

编程调试常用文件格式
在编程和调试过程中,经常需要处理和保存各种文件格式。
以下是一些常用的文件格式:
源代码文件:如 .cpp, .java, .py, .rb 等,这些是编程语言的标准源代码文件。
编译输出文件:如 .o (对象文件) 和 .obj (Microsoft的Object文件),这些是编译器从源代码文件生成的中间文件。
可执行文件:如 .exe (Windows), .out (Unix-like系统),这些是编译完成后的可执行文件。
调试信息文件:如.pdb (Microsoft的Program Database) 和.elf (Executable and Linkable Format),这些文件中包含有关程序结构和变量的信息,对于调试非常有用。
日志文件:如 .log, .txt 等,这些用于记录程序运行时的信息,方便分析和排查问题。
配置文件:如 .ini, .json, .xml 等,这些用于存储程序的配置信息。
数据文件:如 .csv, .xlsx, .json 等,这些用于存储程序运行所需的数据。
二进制文件:如 .bin, .dat 等,这些可以是编译后的二进制数据,也可以是其他格式的数据。
图像文件:如 .png, .jpg, .bmp 等,这些用于存储图像数据。
音频和视频文件:如 .mp3, .wav, .mp4 等,这些用于存储音频和视频数据。
在调试过程中,可能还需要其他特定格式的文件,如符号文件(用于源代码级别的调试)等。
COFF文件格式

COFF文件格式简介COFF:Common Object File FormatCOFF(通用对象文件格式)是一种很流行的对象文件格式(注意:这里不说它是“目标”文件,是为了和编译器产生的目标文件(*.o/*.obj)相区别,因为这种格式不只用于目标文件,库文件、可执行文件也经常是这种格式)。
VC 所产生的目标文件(*.obj)就是这种格式。
其它的编译器,如GCC (GNU Compiler Collection)、ICL(Intel C/C++ Compiler)、VectorC,也使用这种格式的目标文件。
不仅仅是C/C++,很多其它语言也使用这种格式的对象文件。
统一格式的目标文件为混合语言编程带来了极大的方便。
当然,并不是只有这一种对象文件格式。
常用格式的还有OMF-对象模型文件(Object Module File)以及ELF-可执行及连接文件格式(Executable and Linking Format)。
OMF是一大群IT巨头在n年制定的一种格式,在Windows平台上很常见。
大家喜欢的Borland公司现在使用的目标文件就是这种格式。
MS和Intel在n年前用的也是这种格式,现在都改投异侧,用COFF格式了。
ELF 格式在非Windows平台上使用得比较多,在Windows平台基本上没见过。
做为程序员,很有必要认识一下这些你经常打交道的家伙!不过这次让我介绍COFF先!在COFF文件格式中,偏移COFF文件格式整体结构图点,不过还算它的设计者有点远见。
可扩充性设计得不错,以致于沿用至今。
了解了文件的整体结构,现在让我们来逐个段落分析它。
COFF文件一共有8种数据,自上而下分别为:1. 文件头(File Header)2. 可选头(Optional Header)3. 段落头(Section Header)4. 段落数据(Section Data)5. 重定位表(Relocation Directives)6. 行号表(Line Numbers)7. 符号表(Symbol Table)8. 字符串表(String Table)COFF 文件头typedef struct _IMAGE_FILE_HEADER{WORD Machine; //WORD NumberOfSections; //sectionDWORD TimeDateStamp; //一般是此文档生成的时间DWORD PointerToSymbolTable;//symbol table表的文件偏移地址DWORD NumberOfSymbols; //symbol表个数WORD SizeOfOptionalHeader;//0 no used in obj fileWORD Characteristics; //0 no used in obj file} IMAGE_FILE_HEADER, *PIMAGE_FILE_HEADER;节(节目录节数据)各个段的内容和重定位信息头(这个重定位信息头不一定每个段都有,貌似只有.text段才有,这个不太确定),此部分的偏移地址是由section头指定的。
elf格式文件解析

ELF可执行文件的解析与加载ELF文件格式简介1.1前言ELF-可执行链接格式最初是由UNIX系统实验室(USL)作为应用程序二进制接口(ABI)开发和发行。
工具接口标准委员会TIS已经将ELF作为运行在Intel32位架构之上的各类型操作系统的可导出对象文件格式标准。
ELF标准为开发者提供了一组横跨多运行环境的二进制接口定义来组织软件开发。
1.2对象文件1.2.1 介绍本部分描述了ABI对象文件格式,也称之为ELF。
有三种主要类型的对象文件:1. 可重组(relocatable)文件包含了适合用来链接其他对象文件的代码和数据,从而创建出可执行或可共享的对象文件;2. 可执行(executable)文件包含了用于执行的程序,该文件规定了exec如何创建一个程序的进程映像;3. 可共享对象(shared object)文件包含了用来在两个上下文之间链接的代码和数据。
首先,链接器ld将该文件和其他的可重组文件或可共享对象文件进行处理后,创建出新对象文件,其次,动态链接器将该新对象文件与可执行文件或共享对象组合,来共同创建一个进程映像;经过汇编器以及链接器创建成的对象文件,其是在处理器上可直接执行的程序的二进制代表。
本部分主要描述文件格式以及其如何用来构建程序。
后一部分也描述了对象文件,集中在程序执行所必须的信息上。
1.2.1.1 文件格式在程序链接和程序执行过程都涉及到对象文件。
出于方便和效率,对象文件格式图从链接和运行两个视角来展示文件的内容。
ELF header位于文件的开始处,其用来描述文件的组织结构。
Section包含了大量的对象文件信息,从链接的视角来看就是指令、数据、符号表、重组信息等等。
Segment和Program是从程序执行视角来观看的,这将在下部分讲解。
如果存在Program Header table的话,其将告诉操作系统如何创建进程映像。
用来创建进程映像(执行程序)的文件必须包含program header table。
WordXML格式初步分析

WordXML格式初步分析前⾔Office2003以上,Word可以以XML⽂本格式存储,这样就可以使⽤外部程序创建Word⽂件,⽽不需要使⽤Word的对象。
也能够⾃由的打开分析Word⽂件,或者发布到⾃⼰的Web页⾯,或者其他更多应⽤。
⼀个典型的WordXML结构可以是如下的样⼦:<?xml version="1.0"?><w:wordDocument xmlns:w="/office/word/2003/wordml"><w:body><w:p><w:r><w:t>Hello, World.</w:t></w:r></w:p></w:body></w:wordDocument>可以⽤记事本创建⼀个⽂件,将上⾯的XML内容粘贴,并保存为helloworld.xml,在Office Word中打开它,就能看到如上图所⽰的内容。
这是最简单的WordXML内容,它包括这⼏部分:XML的声明和名称空间的指明:<?xml version="1.0"?><w:wordDocument xmlns:w="/office/word/2003/wordml">⽂档内容<w:body>…</w:body>基本节点类型从body内可以看出,构成实际⽂本内容的有3中类型节点:<w:p> 表⽰⼀个段落<w:r> 表⽰⼀个样式串,指明它包括的⽂本的显⽰样式<w:t> 表⽰真正的⽂本内容如果我们需要指明⼀个⽂本为粗体,需要怎么办呢?<w:r><w:rPr><w:b w:val="on"/></w:rPr><w:t> 2.0C</w:t></w:r><w:b w:val=”on”> 表⽰该格式串种的⽂本为粗体。
10种仿真文件格式介绍 -回复

10种仿真文件格式介绍-回复中括号内的主题是"10种仿真文件格式介绍",下面将为您一步一步详细回答。
第一步:概述仿真文件格式是在进行仿真研究和应用过程中使用的文件格式。
它们可以包含模型参数、初始条件、仿真结果等信息,并且能够方便地与不同的仿真软件进行交互。
在本文中,我们将介绍10种常见的仿真文件格式,并探讨它们的特点和应用领域。
第二步:XML格式(扩展标记语言)XML格式是一种可扩展的标记语言,被广泛用于数据交换和表示。
在仿真领域,XML格式常用于模型描述、参数配置和结果输出。
它的主要优点是结构化、可读性强,并且能够与各种编程语言兼容。
第三步:MATLAB格式MATLAB格式是Matlab软件专用的文件格式,可存储多维数组、模型参数和仿真结果。
它优秀的计算性能和丰富的工具箱使得MATLAB格式在科学计算和仿真领域被广泛应用。
第四步:CSV格式(逗号分隔值)CSV格式是一种常用的表格数据存储格式,将数据以逗号分隔的形式保存在纯文本文件中。
在仿真中,CSV格式常用于存储时间序列数据,如仿真结果。
它具有简单、通用、易于处理的特点,但可能不适合存储复杂的模型描述。
第五步:HDF5格式(层次数据格式)HDF5格式是一种用于存储和管理大规模科学数据的文件格式。
它支持层次结构、多种数据类型和数据压缩,适合存储和共享复杂的仿真模型和结果。
HDF5格式在高性能计算和大规模数据分析等领域有广泛应用。
第六步:VTK格式(可视化工具包文件格式)VTK格式是一种用于可视化和分析科学数据的文件格式。
它能够存储多维数组、网格信息和可视化属性,并提供了丰富的数据处理和可视化算法。
VTK格式在计算机辅助设计、医学图像处理和地球科学等领域被广泛使用。
第七步:STL格式(立体光束层处理)STL格式是一种用于表示三维模型的文件格式,常用于计算机辅助设计和三维打印。
它以三角面片的形式描述模型的几何信息,并可以包含法向量和颜色等属性。
常用文件格式大全

不同的文件,有不同的文件格式,区别这些格式常常是文件名的后缀名不同,现统计常用文件后缀名如下,供大家参考和查阅。
O 对象代码库文件O01 台风声音文件OBD Microsoft Office活页夹OBJ 对象文件OBZ Microsoft Office活页夹向导OCX Microsoft对象链接与嵌入定制控件ODS Microsoft Outlook Express邮箱文件OFF 3D 网状物对象文件格式OFN Microsoft Office FileNew文件OFT Microsoft Outlook模板OKT Oktalyzer音乐模块(MOD)文件OLB OLE对象库OLE OLE对象OOGL 面向对象图形库OPL 组织者编程语言源文件——Psion/SymbianOPO OPL输出可执行文件OPT Microsoft Developer Studio文件OPX OPL扩展DLL(动态链接库)ORA Oracle 7 配置文件ORC Oracle 7脚本文件ORG Lotus Organizer 文件OR2 Lotus Organizer 2 文件OR3 Lotus Organizer 97 文件OSS Microsoft Office查找文件OST Microsoft Exchange / Outlook 离线文件OTL Super NoteTab 模板文件OUT C语言输出文件P 对象代码库文件P3 Primavera Project Planner(工程设计器)文件P10 Tektronix Plot 10 绘图文件P65 PageMaker 6.5文件P7C Digital ID 文件(MIME)PAB Microsoft个人地址簿PAC [请不要讲脏话] Studio Ⅱ包PAK Quake WAD文件PAL 压缩文件PART Go!Zilla部分下载文件PAS Pascal源代码PAT DataCAD Hatch模式文件;CorelDRA W模式;高级Gravis Ultrasound / Forte 技术;碎片文件PBD PowerBuilder动态库,作为本地DLL的一个替代物PBF Turtle Beach的Pinnacle 银行文件PBK Microsoft PhoneBook(电话簿)PBL 用于訶owerBuilder开发环境中的PowerBuilder动态库PBM 可导出位图PBR PowerBuilder资源PCD Kodak Photo-CD映像;P-Code编译器测试脚本,由Microsoft测试与Microsoft Visual测试PCE Maps Eudora邮箱名字的DOS文件名PCL Hewlett-Packard 打印机控制语言文件(打印机备用位图)PCM 声音文件格式;OKI MSM6376 合成芯片PCM格式PCP Symantec Live Update Pro文件PCS PICS动画文件PCT Macintosh PICT籜募?PCX Zsoft PC画笔位图PDB 3Com PalmPilot数据库文件PDD 可以用Paint Shop Pro或其他图像处理软件打开的图形图像PDF Adobe Acrobat可导出文档格式文件(可用Web浏览器显示);Microsoft系统管理服务器包定义文件;NetWare打印机定义文件PDP Broderbund的Print Shop Deluxe文件PDQ Patton&Patton Flowercharting PDQ Lite 文件PDS 摄影图像文件(该文件格式的来源不清楚)PF Aladdin系统对私人文件进行加密的文件PFA 类型1字体(ASCⅡ)PFB 类型1字体(二进制)PFC PF组件PFM 打印机字体尺度PGD 良好隐私(Pretty Good Privacy,PGP)虚拟磁盘文件PGL HP绘图仪绘图文件PGM 可输出灰度图(位图)PGP 用良好隐私(PGP)算法加密文件PH 由Microsoft帮助文件编译器产生的临时文件PHP,PHP3 包含有PHP脚本的HTML网页PHTML 包含有PHP脚本的HTML网页;由Perl分析解释的HTMLPIC PC画图位图;Lotus图片;Macintosh PICT绘图PICT Macintosh PICT图形文件PIF 程序信息文件;IBM PIF绘图文件PIG LucasArts的Dark Forces WAD文件PIN Epic Pinball数据文件PIX 内置系统位图PJ MKS源完整性文件PJX,PJT Microsoft Visual FoxPro工程文件PKG Microsoft Developer Studio应用程序扩展(与DLL文件类似)PKR PGP的公用钥匙环PL Perl程序PLG 由REND386/A VRIL使用的文件格式PLI Oracle 7数据描述PLM Discorder Tracker2模块PLS Disorder Tracker2抽样文件;MPEG PlayList文件(由WinAmp使用)PLT HPGL绘图仪绘图文件;AutoCAD plot绘图文件;Gerber标志制作软件PM5 Pagemaker 5.0文件PM6 Pagemaker 6.0文件PNG 可移植的网络图形位图;Paint Shop Pro浏览器目录PNT,PNTG MacPaint图形文件POG Descent2 PIG文件扩展POL Windows NT策略文件POP Visual dBASE上托文件POT Microsoft Powerpoint模块POV 视频射线跟踪器暂留PP4 Picture Publisher 4位图PPA Microsoft Powerpoint内插器PPF Turtle Beach的Pinnacle程序文件PPM 可移植的象素映射位图PPP Parson Power Publisher;Serif PagePlus桌面出版缺省输出PPS Microsoft Powerpoint幻灯片放映PPT Microsoft Powerpoint演示文稿PQI PowerQuest驱动器图像文件PRC 3COM PalmPiltt资源(文本或程序)文件PRE Lotus Freelance演示文稿PRF Windows系统文件,Macromedia导演设置文件PRG dBASE Clipper和FoxPro程序源文件;WA Vmaker程序PRJ 3D Studio(DOS)工程文件PRN 打印表格(用空格分隔的文本);DataCAD Windows打印机文件PRP Oberson的Prospero数据转换产品保存的工程文件PRS Harvard Graphics for Windows演示文件PRT 打印格式化文件;Pro/ENGINEER元件文件PRV PsiMail Internet提供者模板文件PRZ Lotus Freelance Graphics 97文件PS Postscript格式化文件(PostScript打印机可读文件)P[请不要讲脏话] Pinnacle Sound BankPSD Adobe photoshop位图文件PSI PSION a-Law声音文件PSM Protracker Studio模型格式;Epic游戏的源数据文件PSP Paint Shop Pro图像文件PST Microsoft Outlook个人文件夹文件PTD Pro/ENGINEER表格文件PTM Polytracker音乐模块(MOD)文件PUB Ventura Publisher出版物;Microsoft Publisher文档PWD Microsoft Pocket Word文档PWL Windows 95口令列表文件PWP Photoworks图像文件(能被Photoworks浏览的一系列文件)PWZ Microsoft Powerpoint向导PXL Microsoft Pocket Excel电子表格PY 来自Yahoo的电子消息;Python脚本文件PYC Python脚本文件Q 对象代码库文件QAD PF QuickArt文档QBW QuickBooks for Windows文件QDT 来自Quicken UK的QuickBooks数据文件,帐目/税/货单程序QD3D Apple的QuickDraw 3D元文件格式QFL FAMILY LAWYER文档QIC Microsoft备份文件QIF QuickTime相关图像(MIME);Quicken导入文件QLB Quick库QM Quality Motion文件QRY Microsoft查询文件QST Quake Spy Tab文件QT,QTM QuickTime电影QTI,QTIF QuickTime相关图像QTP QuickTime优先文件QTS Mac PICT图像文件;QuickTime相关图像QTX QuickTime相关图像QW Symantec Q&A Write程序文件QXD Quark XPress文件R 对象代码库文件R Pegasus邮件资源文件RA RealAudio声音文件RAM RealAudio元文件RAR RAR压缩档案(Eugene Roshall格式)RAS Sun光栅图像位图RAW RAW文件格式(位图);Raw标识的PCM数据RBH 由RoboHELP维持的RBH文件,它加入到一个帮助工程文件的信息中RDF 资源描述框架文件(涉及XML和元数据)RDL Descent注册水平文件REC 录音机宏;RapidComm声音文件REG 注册表文件REP Visual dBASE报表文件RES Microsoft Visual C++资源文件RFT 可修订的表单文本(IBM的DCA一部分或文档内容框架结构一部分)RGB,SGI Silicon图形RGB文件RLE Run-Length编码的位图RL2 Descent2注册水平文件RM RealAudio视频文件RMD Microsoft RegMaid文档RMF Rich Map格式(3D游戏编辑器使用它来保存图)RMI M1D1音乐ROM 基于盒式磁带的家庭游戏仿真器文件(来自Atari2600、Colecovision、Sega、Nintendo等盒式磁带里的ROM完全拷贝,在两个仿真器之间不可互修改)ROV Rescue Rover数据文件RPM RedHat包管理器包(用于Linux)RPT Microsoft Visual Basic Crystal报表文件RRS Ace game Road Rash保存的文件RSL Borland的Paradox 7报表RSM WinWay Resume Writer恢复文件RTF Rich Text格式文档RTK RoboHELP使用的用来模拟Windows帮助的搜索功能RTM Real Tracker音乐模块(MOD)文件RTS RealAudio的RTSL文档;RoboHELP对复杂操作进行加速RUL InstallShield使用的扩展名RVP Microsoft Scan配置文件(MIME)Rxx 多卷档案上的RAR压缩文件(xx= 1~99间的一个数字)S 对象代码库文件S3I Scream Tracker v3设备S3M Scream Tracker v3的声音模块文件SAM Ami专业文档;8位抽样数据SA V 游戏保存文件[请不要讲脏话] 原始带符号字节(8位)数据[请不要讲脏话]K Creative Labs的Soundfont 1.0 Bank文件;(Soundblaster)/EMU SonndFont v1.x Bank文件[请不要讲脏话]L Shockwave Flash对象文件SC2 Microsoft Schedule+7文件格式;SAS目录(Windows 95/NT、OS/2、Mac)SC3 SimCity 3000保存的游戏文件SCC Microsoft Source Safe文件SCD Matrix/Imapro SCODL幻灯片图像;Microsoft Schedule +7SCF Windows Explorer命令文件SCH Microsoft Schedule+1SCI ScanVec Inspire本地文件格式SCN True Space 2场景文件SCP 拨号网络脚本文件SCR Windows屏幕保护;传真图像;脚本文件SCT SAS目录(DOS);Scitex CT位图;Microsoft FoxPro表单SCT01 SAS目录(UNIX)SCV ScanVec CASmate本地文件格式SCX Microsoft FoxPro表单文件SD Sound Designer 1声音文件SD2 Sound Designer 2展平文件/数据分X指令;SAS数据库(Windows 95/NT、OS/2、Mac)SDF 系统数据文件格式—Legacy Unisys(Sperry)格式SDK Roland S—系列软盘映像SDL Smart Draw库文件SDR Smart Draw绘图文件SDS 原始Midi抽样转储标准文件SDT SmartDraw模板SDV 分号分隔的值文件SDW Lotus WordPro图形文件;原始带符号的DWORD(32位)数据SDX 由SDX压缩的Midi抽样转储标准文件SEA 自解压档案(Stufflt for Macintosh或其他软件使用的文件)SEP 标签图像文件格式(TIFF)位图SES Cool Edit Session文件(普通数据声音编辑器文件)SF IRCAM声音文件格式SF2 Emu Soundfont v2.0文件;Creative Labs的Soundfont 2.0 Bank文件(Sound Blaster)SFD SoundStage声音文件数据SFI Sound Stage声音文件信息SFR Sonic Foundry Sample资源SFW Seattle电影工程(损坏的JPEG)SFX RAR自解压档案SGML 标准通用标签语言SHB Corel Show演示文稿;文档快捷文件SHG 热点位图SHP 3D Studio(DOS)形状文件;被一些应用程序用于多部分交互三角形模型的3D 建模SHS Shell scrap文件;据载用于发送“口令盗窃者”SHTML 含有服务器端包括(SSI)的HTML文件SHW Corel Show演示文稿SIG 符号文件SIT Mac的StuffIt档案文件SIZ Oracle 7配置文件SKA PGP秘钥SKL Macromedia导演者资源文件SL PACT的保存布局扩展名SLB Autodesk Slide库文件格式SLD Autodesk Slide文件格式SLK Symbolic Link(SYLK)电子表格SM3 DataCAD标志文件SMP Samplevision格式;Ad Lib Gold抽样文件SND NeXT声音;Mac声音资源;原始的未符号化的PCM数据;AKAI MPC系列抽样文件SNDR Sounder声音文件SNDT Sndtool声音文件SOU [请不要讲脏话] Studio Ⅱ声音SPD Speech数据文件SPL Shockwave Flash对象;DigiTrakker抽样SPPACK SPPack声音抽样SPRITE Acorn的位图格式SQC 结构化查询语言(SQR)普通代码文件SQL InFORMix SQL查询;通常被数据库产品用于SQL查询(脚本、文本、二进制)的文件扩展名SQR 结构化查询语言(SQR)程序文件SSDO1 SAS数据集合(UNIX)SSD SAS数据库(DOS)SSF 可用的电子表格文件ST Atari ST磁盘映像STL Sterolithography文件STM .shtml的短后缀形式,含有一个服务端包括(SSI)的HTML文件;Scream Tracker V2音乐模块(MOD)文件STR 屏幕保护文件STY Ventura Publisher风格表SVX Amiga 8SVX声音;互交换文件格式,8SVX/16SVSW 原始带符号字(16位)数据SWA 在Macromedia导演文件(MP3文件)中的Shockwave声音文件SWF Shockwave Flash对象SWP DataCAD交换文件SYS 系统文件SYW Yamaha SY系列波形文件。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
对象文件格式分析工具: objdump, nm,ar前言如果普通编程不需要了解这些东西,如果想精确控制你的对象文件的格式或者你想查看一下文件对象里的内容以便作出某种判断,刚你可以看一下下面的工具:objdump, nm, ar。
当然,本文不可能非常详细的说明它们的使用方法和功能。
如果你觉得本文不够清楚,你可以使用:man. 我的计划只是想让更多的人了解这些工具,以后在今后的编程过程中能有所帮助。
1. 库文件操作命令:ar ----非常好的东东。
让你能查看函数库里的详细情况和用多个对象文件生成一个库文件。
可以将多个.o打包成一个.a或者将一个.a拆分成.o1. 经常用法:1. ar -t libname.a //显示所有对象文件(.o文件)的列表.例:# ar t libtest.alibtest1.olibtest2.o2. ar -rv libname.a objfile1.o objfile2.o ... objfilen.o //把objfile1.o--objfilen.o打包成一个库文件2. ar 选项d:从库中删除模块。
按模块原来的文件名指定要删除的模块。
如果使用了任选项v则列出被删除的每个模块。
m:该操作是在一个库中移动成员。
当库中如果有若干模块有相同的符号定义(如函数定义),则成员的位置顺序很重要。
如果没有指定任选项,任何指定的成员将移到库的最后。
也可以使用'a','b',或'I'任选项移动到指定的位置。
p:显示库中指定的成员到标准输出。
如果指定任选项v,则在输出成员的内容前,将显示成员的名字。
如果没有指定成员的名字,所有库中的文件将显示出来。
q:快速追加。
增加新模块到库的结尾处。
并不检查是否需要替换。
'a','b',或'I'任选项对此操作没有影响,模块总是追加的库的结尾处。
如果使用了任选项v则列出每个模块。
这时,库的符号表没有更新,可以用'ar s'或ranlib来更新库的符号表索引。
r:在库中插入模块(替换)。
当插入的模块名已经在库中存在,则替换同名的模块。
如果若干模块中有一个模块在库中不存在,ar显示一个错误消息,并不替换其他同名模块。
默认的情况下,新的成员增加在库的结尾处,可以使用其他任选项来改变增加的位置。
t:显示库的模块表清单。
一般只显示模块名。
x:从库中提取一个成员。
如果不指定要提取的模块,则提取库中所有的模块。
下面在看看可与操作选项结合使用的任选项:a:在库的一个已经存在的成员后面增加一个新的文件。
如果使用任选项a,则应该为命令行中membername参数指定一个已经存在的成员名。
b:在库的一个已经存在的成员前面增加一个新的文件。
如果使用任选项b,则应该为命令行中membername参数指定一个已经存在的成员名。
c:创建一个库。
不管库是否存在,都将创建。
f:在库中截短指定的名字。
缺省情况下,文件名的长度是不受限制的,可以使用此参数将文件名截短,以保证与其它系统的兼容。
i:在库的一个已经存在的成员前面增加一个新的文件。
如果使用任选项i,则应该为命令行中membername参数指定一个已经存在的成员名(类似任选项b)。
l:暂未使用N:与count参数一起使用,在库中有多个相同的文件名时指定提取或输出的个数。
o:当提取成员时,保留成员的原始数据。
如果不指定该任选项,则提取出的模块的时间将标为提取出的时间。
P:进行文件名匹配时使用全路径名。
ar在创建库时不能使用全路径名(这样的库文件不符合POSIX标准),但是有些工具可以。
s:写入一个目标文件索引到库中,或者更新一个存在的目标文件索引。
甚至对于没有任何变化的库也作该动作。
对一个库做ar s等同于对该库做ranlib。
S:不创建目标文件索引,这在创建较大的库时能加快时间。
u:一般说来,命令ar r...插入所有列出的文件到库中,如果你只想插入列出文件中那些比库中同名文件新的文件,就可以使用该任选项。
该任选项只用于r操作选项。
v:该选项用来显示执行操作选项的附加信息。
V:显示ar的版本.2. nm --列出目标文件(.o)的符号清单。
NND,太激动了。
刚知道此命令时让我三天没睡好觉。
我就使劲用了一把。
1. 常用法:1. nm -s filename.a/filename.o/a.out 里边所有的符号列表一清二楚。
例:# nm -s a.out080495b8 A __bss_start08048334 t call_gmon_start080495b8 b completed.5751080494b8 d __CTOR_END__080494b4 d __CTOR_LIST__080495ac D __data_start080495ac W data_start08048450 t __do_global_ctors_aux08048360 t __do_global_dtors_aux080495b0 D __dso_handle080494c0 d __DTOR_END__080494bc d __DTOR_LIST__080494c8 d _DYNAMIC080495b8 A _edata080495bc A _end0804847c T _fini08048498 R _fp_hw08048390 t frame_dummy080484b0 r __FRAME_END__08049594 d _GLOBAL_OFFSET_TABLE_w __gmon_start__0804844c T __i686.get_pc_thunk.bx080482b8 T _init080494b4 a __init_array_end080494b4 a __init_array_start0804849c R _IO_stdin_used080494c4 d __JCR_END__080494c4 d __JCR_LIST__w _Jv_RegisterClasses080483e0 T __libc_csu_fini080483f0 T __libc_csu_initU __libc_start_main@@GLIBC_2.0080483b4 T main080495b4 d p.5749U puts@@GLIBC_2.008048310 T _start2. 选项/属性:-a或--debug-syms:显示调试符号。
-B:等同于--format=bsd,用来兼容MIPS的nm。
-C或--demangle:将低级符号名解码(demangle)成用户级名字。
这样可以使得C++函数名具有可读性。
-D或--dynamic:显示动态符号。
该任选项仅对于动态目标(例如特定类型的共享库)有意义。
-f format:使用format格式输出。
format可以选取bsd、sysv或posix,该选项在GNU的nm中有用。
默认为bsd。
-g或--extern-only:仅显示外部符号。
-n、-v或--numeric-sort:按符号对应地址的顺序排序,而非按符号名的字符顺序。
-p或--no-sort:按目标文件中遇到的符号顺序显示,不排序。
-P或--portability:使用POSIX.2标准输出格式代替默认的输出格式。
等同于使用任选项-f posix。
-s或--print-armap:当列出库中成员的符号时,包含索引。
索引的内容包含:哪些模块包含哪些名字的映射。
-r或--reverse-sort:反转排序的顺序(例如,升序变为降序)。
--size-sort:按大小排列符号顺序。
该大小是按照一个符号的值与它下一个符号的值进行计算的。
-t radix或--radix=radix:使用radix进制显示符号值。
radix只能为"d"表示十进制、"o"表示八进制或"x"表示十六进制。
--target=bfdname:指定一个目标代码的格式,而非使用系统的默认格式。
-u或--undefined-only:仅显示没有定义的符号(那些外部符号)。
-l或--line-numbers:对每个符号,使用调试信息来试图找到文件名和行号。
对于已定义的符号,查找符号地址的行号。
对于未定义符号,查找指向符号重定位入口的行号。
如果可以找到行号信息,显示在符号信息之后。
-V或--version:显示nm的版本号。
--help:显示nm的任选项。
3. objdump 文件命令功能强的惊人。
能实现上述两个命令(ar,nm)的很多功能。
它主要是查看对象文件的内容信息。
1. 常用法:1. objdump -h file<.o,.a,.out>//查看对象文件所有的节sections.例如:# objdump -h libtest1.olibtest1.o: file format elf32-i386Sections:Idx Name Size VMA LMA File off Algn0 .text 00000014 00000000 00000000 00000034 2**2CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE1 .data 00000000 00000000 00000000 00000048 2**2CONTENTS, ALLOC, LOAD, DATA2 .bss 00000000 00000000 00000000 00000048 2**2ALLOC3 .rodata 0000000e 00000000 00000000 00000048 2**0CONTENTS, ALLOC, LOAD, READONLY, DATA4 .comment 0000001f 00000000 00000000 00000056 2**0CONTENTS, READONLY5 .note.GNU-stack 00000000 00000000 00000000 00000075 2**0CONTENTS, READONLY2. objdump -t 查看对象文件所有的符号列表,相当于nm -s objfilename,如:# objdump -t libtest1.olibtest1.o: file format elf32-i386SYMBOL TABLE:00000000 l df *ABS* 00000000 libtest1.c00000000 l d .text 00000000 .text00000000 l d .data 00000000 .data00000000 l d .bss 00000000 .bss00000000 l d .rodata 00000000 .rodata00000000 l d .note.GNU-stack 00000000 .note.GNU-stack00000000 l d .comment 00000000 .comment00000000 g F .text 00000014 print_test100000000 *UND* 00000000 puts2. 更多信息请查看选项:--archive-headers-a 显示档案库的成员信息,与ar tv 类似objdump -a libpcap.a和ar -tv libpcap.a 显示结果比较比较显然这个选项没有什么意思。