GNU/Linux >> Belajar Linux >  >> Linux

crt1.o:Dalam fungsi `_start':- referensi tidak terdefinisi ke `main' di Linux

Coba tambahkan -nostartfiles ke opsi penaut Anda, mis.

$(LINK) -nostartfiles -g ...

Dari dokumentasi gcc:

-nostartfiles
    Do not use the standard system startup files when linking. The standard system libraries are used normally, unless -nostdlib or -nodefaultlibs is used. 

Ini menyebabkan crt1.o tidak untuk ditautkan (biasanya ditautkan secara default) - biasanya hanya digunakan saat Anda mengimplementasikan _start Anda sendiri kode.


-shared opsi tautan harus digunakan saat Anda mengompilasi .so


Masalahnya bagi saya adalah, saya secara tidak sengaja memasukkan int main() dalam ruang nama. Pastikan jangan lakukan itu jika tidak, Anda akan mendapatkan kesalahan tautan yang mengganggu ini.

Semoga ini bisa membantu siapa saja :)


Linux
  1. Di mana fungsi itoa di Linux?

  2. Memotong file saat sedang digunakan (Linux)

  3. Kesalahan c ++ Linux:referensi tidak terdefinisi ke 'dlopen'

  1. fflush() tidak berfungsi di Linux

  2. copy_to_user tidak terdefinisi di kernel linux versi 4.12.8

  3. Tautan dinamis - Linux Vs. Windows

  1. Periksa ruang disk yang digunakan di Linux dengan du

  2. Python any() Fungsi di Linux

  3. 7 namespace Linux yang paling banyak digunakan