オプション -nodefaultlib
でコンパイルする必要があります または -nostdlibs
.
GCC ドキュメントからの引用 (clang インターフェースはまったく同じです):
<ブロック引用>
-nostdlib
によってバイパスされる標準ライブラリの 1 つ と -nodefaultlibs
libgcc.a
です は、GCC が特定のマシンの欠点や一部の言語の特別なニーズを克服するために使用する内部サブルーチンのライブラリです。
C++ 静的初期化ルーチンを実行するか、オブジェクト ファイル crt<x>.o
によって提供されるものを使用する必要がある場合があります。 lib ディレクトリにあります。これらのファイルは libc
の一部です 実行可能なエントリ ポイントを提供します。
Clang にはリンカーが付属しておらず、ld
に依存しています。 代わりは。そして ld
libgcc.a
に依存 および/または libgcc.so
あなたのシステムで (これが LLVM リンカ ld.lld
であるかどうかに関係なく) または GNU ld)。これが、このエラー メッセージが表示される理由です。
答えは実際には次のとおりです。
<ブロック引用>(a) リンカーは libgcc が独自のリンク作業を行うことを要求します
詳細については、omniprog.info をご覧ください:
<ブロック引用>GCC を取り除き、clang をシステムのデフォルト コンパイラとして使用する場合は、一部の RPM ベースのシステムで調整が必要になる場合があります。 Clang はリンカーを提供しませんが、システムのリンカー (通常は ld) に依存して実行可能ファイルをリンクします。これは、Clang がデフォルトのコンパイラである FreeBSD および Mac OS X システムでも当てはまります。これは、clang++ の -v オプションを使用して確認できます。現在、次のファイルがないと ld は機能しません:
<ブロック引用>
libgcc.a
libgcc_s.so
[...]