-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() を入力したことです 名前空間で。そうしないと、この迷惑なリンク エラーが発生します。
これが誰かに役立つことを願っています:)