GNU/Linux >> Znalost Linux >  >> Linux

Jak zjistit, které možnosti příkazového řádku gcc standardně předává ld?

Pro milovníky oneline:

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

Nahraďte -x c s -x c++ získat příznaky c++.

Lze použít i s clang, ale v takovém případě byste měli hledat /usr/bin/ld


Ano, můžete použít gcc -v hello.o -o hello získat linku odkazu. Pro váš příklad na mém počítači ubuntu dostávám tento linkový řádek (upravený tak, aby byl víceřádkový pro čitelnost):

/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

Všimněte si, že collect2 je pouze alias pro ld .


Linux
  1. Jak vymazat historii příkazového řádku BASH v Linuxu

  2. Jak vypnout nebo restartovat Linux pomocí příkazového řádku

  3. Linux – Jak zjistit rodinu architektury Intel z příkazového řádku?

  1. Jak si zapamatovat možnosti příkazů?

  2. Jak restartovat Linux pomocí příkazového řádku

  3. 15 Nejčastěji používaných možností příkazového řádku kompilátoru GCC

  1. Linux File Command:Jak určit typ souboru v Linuxu

  2. Jak vytvořit instanci v OpenStack pomocí příkazového řádku

  3. Jak vytvořit soubor, který se jmenuje jako argument příkazového řádku?