一、objcopy命令
objcopy命令是GNU binutils工具包中的一個工具,它可用於創建一個有特殊排列和格式的目標文件或者可執行文件。objcopy也可以將目標文件和可執行文件中的某些部分拷貝到新的文件中,或創建一個空的目標文件或可執行文件。該命令是一個多功能工具,下面我們分別來講述一些常用的用法。
二、objcopy bin文件
有時候我們需要將二進位文件中的某些內容通過objcopy命令提取出來,包括從目標二進位文件中提取出某一特定段(s-section)如:.text, .data, .rodata,.bss等部分。objcopy命令可以通過-s和-O binary兩個選項將目標文件的段(section)提出來,生成一個獨立的二進位文件。例如:
$ objcopy -O binary -j .text input.o output.bin
這個命令會將 input.o 文件中的 .text 段提取出來,生成一個名為 output.bin 的獨立二進位文件。
三、objcopy 二進位
我們有時需要將一個採用某種二進位文件格式的文件轉換為另一種二進位文件格式,例如將一個ELF文件轉換成COFF文件。此時,我們可以使用objcopy命令來完成文件格式的轉化。舉個例子:
$ objcopy -I elf32-little -O binary input.elf output.coff
這個命令不僅可以將ELF文件轉化為COFF格式的文件,也可以將Mach-O, PE/COFF文件轉成ELF格式的文件。其中,-I選項表示輸入文件格式,-O選項表示輸出的格式。這樣,我們就可以實現不同二進位文件格式之間的互相轉換。
四、objcopy elf轉bin
有時我們需要將ELF文件轉換為獨立的二進位文件。下面是一個使用objcopy進行ELF轉換為二進位文件的例子:
$ objcopy -O binary input.elf output.bin
這個命令將 input.elf 文件轉成了獨立的二進位文件 output.bin。
五、objcopy -O選項
objcopy命令有一個-O選項,可以指定輸出文件格式。objcopy支持的輸出文件格式種類眾多。下面是一些常見輸出文件格式:
1. ELF格式的輸出文件
$ objcopy -O elf32-littlearm input.elf output.elf
這個命令將輸入文件 input.elf 轉化為ELF格式的輸出文件 output.elf。
2. IEEE 695格式的輸出文件
$ objcopy -O ihex input.elf output.hex
這個命令將輸入文件 input.elf 轉換為IEEE 695格式的輸出文件 output.hex。
3. 可執行二進位文件格式的輸出文件
$ objcopy -O binary input.elf output.bin
這個命令將輸入文件 input.elf 轉化為可執行二進位文件格式的輸出文件 output.bin。
4. SREC格式的輸出文件
$ objcopy -O srec input.elf output.srec
這個命令將輸入文件 input.elf 轉化為SREC格式的輸出文件 output.srec。
5. 格式為Motorola S-Record的輸出文件
$ objcopy -O srec input.elf output.s19
這個命令將輸入文件 input.elf 轉化為Motorola S-Record格式的輸出文件 output.s19。
總之,objcopy命令的-O選項可以讓開發者方便地將同一種二進位文件通過不同的格式,如SREC、I8擺譜、ELF和Binary,進行不同的轉化。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/298224.html