Clangにはどのリンカーを使用しますか?
リンカーとしてClangまたはGNUリンカー(ld
)を使用すると、標準ライブラリにリンクしていないかのように大量のエラーが発生します。
g++ $(OBJS) -o $(BINDIR)/obtap
Clangオブジェクトをリンクするにはg++を使用する必要があるようです。
「clang++」の代わりに「clang」を実行していました。つまり、C++標準ライブラリをリンクしていませんでした。
llvmのリンクエディタを使用する必要はありません。技術的な詳細には触れないようにしますが、要するに、現時点でClangを使用するには、一般的なUnixリンクエディターを使用できるようにする必要があります(GNUldまたはSunldを参照)。llvm-ldでさえ、基盤となるプラットフォームのリンカーを使用してネイティブバイナリをリンクします。
フォローアップ:2016年になり、llvmは独自のリンカーで着実な進歩を遂げました。それは「lld」と呼ばれ、ウェブサイトはここにあります。 i386およびx86_64バイナリを作成することは問題なく機能しますが、他のシステムを対象とする作業は進行中です。
これにより、十分に安定していると見なされると、BSD用のGNUツールへの依存がなくなるはずです。