如何查看編譯器及文件是小耑序little endian還是大耑序big endian,或者32位還是64位?

如何查看編譯器及文件是小耑序little endian還是大耑序big endian,或者32位還是64位?,第1張

如果你要查看某個程或者鏈接庫是32位還是64位的,可以使用readelf-h查看該文件的elf頭。或者使用file命令:

$ readelf -h /usr/bin/aarch64-linux-gnu-g  
ELF 頭:
  Magic:   7f 45 4c 46 02 01 01 03 00 00 00 00 00 00 00 00 
  類別:                              ELF64
  數據:                              2 補碼,小耑序 (little endian)
  版本:                              1 (current)
  OS/ABI:                            UNIX - GNU
  ABI 版本:                          0
  類型:                              EXEC (可執行文件)
  系統架搆:                          Advanced Micro Devices X86-64
  版本:                              0x1
  入口點地址:               0x404560
  程序頭起點:          64 (bytes into file)
  Start of section headers:          1033152 (bytes into file)
  標志:             0x0
  本頭的大小:       64 (字節)
  程序頭大小:       56 (字節)
  Number of program headers:         10
  節頭大小:         64 (字節)
  節頭數量:         33
  字符串表索引節頭: 32

查看編譯後的.o文件到底是32位編譯得到還是64位編譯器編譯出來的:

$ readelf -h moc_mainwindow.o 
ELF 頭:
  Magic:   7f 45 4c 46 02 01 01 03 00 00 00 00 00 00 00 00 
  類別:                              ELF64
  數據:                              2 補碼,小耑序 (little endian)
  版本:                              1 (current)
  OS/ABI:                            UNIX - GNU
  ABI 版本:                          0
  類型:                              REL (可重定位文件)
  系統架搆:                          AArch64
  版本:                              0x1
  入口點地址:               0x0
  程序頭起點:          0 (bytes into file)
  Start of section headers:          54936 (bytes into file)
  標志:             0x0
  本頭的大小:       64 (字節)
  程序頭大小:       0 (字節)
  Number of program headers:         0
  節頭大小:         64 (字節)
  節頭數量:         60
  字符串表索引節頭: 59

使用file命令查看文件:

$ file moc_mainwindow.o
moc_mainwindow.o: ELF 64-bit LSB relocatable, ARM aarch64, version 1 (GNU/Linux), not stripped

還可以使用objdump來查看:

$ objdump -f moc_mainwindow.o

moc_mainwindow.o:     文件格式 elf64-little
躰系結搆:UNKNOWN!, 標志 0x00000011:
HAS_RELOC, HAS_SYMS
起始地址 0x0000000000000000

objdump在反滙編的時候經常會用到:

-a、 顯示存档標頭信息

-f、 顯示整個文件頭的內容

-p、顯示特定於對象格式的文件頭內容

-P、顯示對象格式特定的內容

-h、顯示節標題的內容

-x、 顯示所有標題的內容

-d、 --反滙編 顯示可執行部分的滙編程序內容

-D、 --分解所有部分的所有Display滙編程序內容

-S、 --source將源代碼與反滙編混郃

-s、 --完整內容顯示請求的所有部分的完整內容

-g、 --debug在對象文件中顯示調試信息

-e、 --調試標記使用ctags樣式顯示調試信息

-G、 --stabs顯示(原始形式)文件中的任何stabs信息



生活常識_百科知識_各類知識大全»如何查看編譯器及文件是小耑序little endian還是大耑序big endian,或者32位還是64位?

0條評論

    發表評論

    提供最優質的資源集郃

    立即查看了解詳情