Anda harus mengkompilasi dengan opsi -nodefaultlib
atau -nostdlibs
.
Berikut kutipan dari dokumentasi GCC (antarmuka dentang sama saja):
Salah satu pustaka standar dilewati oleh
-nostdlib
dan-nodefaultlibs
adalahlibgcc.a
, perpustakaan subrutin internal yang digunakan GCC untuk mengatasi kekurangan mesin tertentu, atau kebutuhan khusus untuk beberapa bahasa.
Anda mungkin harus menjalankan rutinitas inisialisasi statis c++ dan/atau menggunakan apa yang disediakan oleh file objek crt<x>.o
di direktori lib. File-file ini adalah bagian dari libc
dan memberikan titik masuk yang dapat dieksekusi.
Dentang tidak disertakan dengan tautan, ia bergantung pada ld
alih-alih. Dan ld
tergantung pada libgcc.a
dan/atau libgcc.so
di sistem Anda (terlepas dari ini adalah linker LLVM ld.lld
atau GNU ld). Inilah alasan mengapa Anda mendapatkan pesan kesalahan ini.
Jadi sebenarnya jawabannya adalah:
(a) penaut memerlukan libgcc untuk melakukan pekerjaan penautannya sendiri
Lebih banyak detail tentang ini tersedia di sini di omniprog.info:
Jika kita ingin menghilangkan GCC dan menggunakan dentang sebagai kompiler default kita pada sistem, kita mungkin harus membuat beberapa penyesuaian pada beberapa sistem berbasis RPM. Dentang tidak menyediakan penaut, tetapi bergantung pada penaut sistem, biasanya ld, untuk menautkan file yang dapat dieksekusi. Ini terjadi bahkan pada sistem FreeBSD dan Mac OS X di mana Dentang adalah kompiler default. Kita bisa melihat ini menggunakan opsi -v untuk dentang++. Sekarang, ld tidak akan berfungsi tanpa file-file berikut:
libgcc.a
libgcc_s.so
[...]