-nostartfiles
を追加してみてください リンカーオプションに、つまり
$(LINK) -nostartfiles -g ...
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.
これにより crt1.o
が発生します リンクしない (通常はデフォルトでリンクされています) - 通常は独自の _start
を実装する場合にのみ使用されます コード。
-shared
.so
をコンパイルするときは、link オプションを使用する必要があります。
私にとっての問題は、誤って int main()
を入力したことです 名前空間で。そうしないと、この迷惑なリンク エラーが発生します。
これが誰かに役立つことを願っています:)