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
.
Tambahkan tanda kutip ganda di sekitar bidang dalam keluaran skrip AWK?
Periksa keberadaan wget/curl