Linuxコンパイルが表示されます(.text + 0x20):「main」collect2への未定義の参照:エラー:ldは1を返します| (.text + 0x20):未定義の参照Scrt1.o



Linux Compilation Appears



@ [TOC](Linuxコンパイルが表示されます(.text + 0x20): 'main'への未定義の参照collect2:エラー:ldは1を返します|(.text + 0x20): `main 'への未定義の参照と関数メソッドへの未定義の参照)

オペレーティング・システム

Ubuntu18.04 hpbook2000gccバージョン7.3.0



物語

まず、国内のウェブサイトから借りましたが、ほとんどの人がMakefileはとても変だと言っていました。ソースコードをコンパイルするときに問題だと思いました。しかし、誰もがそれをインストールするために「apt install gcc && apt installg ++」を使用しました。このエラーは発生しないと言われています。の。その時私は素朴で、愚かな日を待ちました。 ソースコードはgccをコンパイルします。

取得しても意味がないので、上記のエラーをお知らせします。次に、メインを_startに変更するか、メイン関数名が問題ないかを確認するインターネットを聞いてください。 tmサークルおならを置きます。また、最も重要な理由は、Scrt1.oのメイン関数名が使用前に定義されているため、エラーが報告されることであるとも言われています。わかりました。.oファイルを変更する方法がわかりません。



オンラインでは、前者を変更する方法があるとも述べています。gcc&g ++では、-nostdlibまたは-nostartfileパラメーターを追加します。コンパイル後、カーネルが欠落し、エラーはさらに法外です。 .oファイルを強制的に歪ませた結果であるセグメンテーション違反もあります。

##私の解決策// The most nonsensical approach is often the most effective, just like the bad pen method. cd /usr/lib/ && cp crt1.o Scrt1.o

そうでない場合は、gccを再度コンパイルします。 G ++とgccは相互に関連付けられています。