GNU/Linux >> Belajar Linux >  >> Linux

Dapatkan opsi kompiler dari kompilasi yang dapat dieksekusi?

gcc memiliki -frecord-gcc-switches opsi untuk itu:

   -frecord-gcc-switches
       This switch causes the command line that was used to invoke the compiler to
       be recorded into the object file that is being created.  This switch is only
       implemented on some targets and the exact format of the recording is target
       and binary file format dependent, but it usually takes the form of a section
       containing ASCII text.

Setelah itu, executable ELF akan berisi .GCC.command.line bagian dengan informasi itu.

$ gcc -O2 -frecord-gcc-switches a.c
$ readelf -p .GCC.command.line a.out 

String dump of section '.GCC.command.line':
  [     0]  a.c
  [     4]  -mtune=generic
  [    13]  -march=x86-64
  [    21]  -O2
  [    25]  -frecord-gcc-switches

Tentu saja, ini tidak akan berfungsi untuk executable yang dikompilasi tanpa opsi tersebut.

Untuk kasus pengoptimalan sederhana, Anda bisa coba gunakan debugger jika file dikompilasi dengan info debug. Jika Anda melewatinya sedikit, Anda mungkin memperhatikan bahwa beberapa variabel 'dioptimalkan'. Itu menunjukkan bahwa pengoptimalan telah terjadi.


Pilihan lainnya adalah -grecord-gcc-swtiches (perhatikan, bukan -f tapi -g). Menurut gcc docs itu akan menempatkan flag ke info debug kerdil. Dan sepertinya diaktifkan secara default sejak gcc 4.8.

Saya telah menemukan program dwarfdump berguna untuk mengekstrak cflag tersebut. Catatan, program string tidak melihatnya. Sepertinya info kerdil dikompresi.


Jika Anda mengkompilasi dengan -frecord-gcc-switches flag, maka opsi kompiler baris perintah akan ditulis dalam biner di bagian catatan. Lihat juga dokumennya.


Linux
  1. Xmanager:Gagal mendapatkan tanggal instalasi dari registri sistem! [Terselesaikan]

  2. Linux – Bisakah Kita Mendapatkan Informasi Kompilator Dari Biner Elf?

  3. Linux:Bagaimana Mendapatkan Semua Log Masuk Dari Sistem?

  1. 15 Opsi Baris Perintah Kompilator GCC yang Paling Sering Digunakan

  2. Bagaimana cara mendapatkan versi driver nvidia dari baris perintah?

  3. dapatkan 5 karakter pertama dari setiap baris dalam skrip Shell

  1. Bagaimana cara mendapatkan URL file Dropbox dari baris perintah?

  2. Bagaimana cara mendapatkan alamat IP saya dari baris perintah?

  3. Apakah ada cara untuk mendapatkan versi BIOS dari dalam Linux?