GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara menentukan opsi baris perintah mana yang diteruskan gcc ke ld secara default?

Untuk pecinta oneline:

echo "int main(void) {}" | gcc -o /dev/null -v -x c - &> /dev/stdout| grep collect | tr -s " " "\012"

Ganti -x c dengan -x c++ untuk mendapatkan bendera c++.

Dapat digunakan juga dengan dentang, tetapi dalam kasus seperti itu Anda harus mencari /usr/bin/ld


Ya, Anda dapat menggunakan gcc -v hello.o -o hello untuk mendapatkan garis penghubung. Sebagai contoh Anda di mesin ubuntu saya, saya mendapatkan baris tautan ini (diedit menjadi multiline agar mudah dibaca):

/usr/lib/gcc/x86_64-linux-gnu/4.4.5/collect2
--build-id
--eh-frame-hdr
-m elf_x86_64
--hash-style=gnu
-dynamic-linker
/lib64/ld-linux-x86-64.so.2
-o hello
-z relro
/usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../../lib/crt1.o
/usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../../lib/crti.o
/usr/lib/gcc/x86_64-linux-gnu/4.4.5/crtbegin.o
-L/usr/lib/gcc/x86_64-linux-gnu/4.4.5
-L/usr/lib/gcc/x86_64-linux-gnu/4.4.5
-L/usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../../lib
-L/lib/../lib
-L/usr/lib/../lib
-L/usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../.. -L/usr/lib/x86_64-linux-gnu
hello.o
-lgcc
--as-needed -lgcc_s --no-as-needed 
-lc
-lgcc
--as-needed -lgcc_s --no-as-needed
/usr/lib/gcc/x86_64-linux-gnu/4.4.5/crtend.o
/usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../../lib/crtn.o

Perhatikan bahwa collect2 hanyalah alias untuk ld .


Linux
  1. Cara Shutdown atau Reboot Linux menggunakan Command Line

  2. Linux – Bagaimana Cara Mengetahui Keluarga Arsitektur Intel Dari Baris Perintah?

  3. Bagaimana Cara Mengingat Opsi Perintah??

  1. Cara Menghapus Riwayat Baris Perintah BASH di Linux

  2. Cara Reboot Linux Menggunakan Command Line

  3. Bagaimana cara membuat file yang dinamai seperti argumen baris perintah?

  1. Perintah File Linux:Cara Menentukan Jenis File di Linux

  2. Cara Membuat Instance di OpenStack melalui Command Line

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