LLVM と CLang と GNUstep は、使用するのが難しいまたは複雑であるとは主張していないため、これは良い質問です。ただし、ユーザーにドキュメントを読む (および再読する) ように求めています。私自身、Ubuntu でこの組み合わせを発見したばかりで、非常に興味深いものです。そして、現時点では多くの可動部分があります。
OPがgnustepメーリングリストの1つで回答を得た場合、それがどのように解決されたかをここで聞いてうれしいです.
最初からやり直して、LLVM と GNUstep から最新のものだけを直接インストールするという通常のルートを提案することなく、ここに私の見解を示します。
OP は、gunstep/libobjc2 プロジェクトによって提供されるランタイムで ARC とブロックを使用しようとしています。
libobjc2 はおそらく、clang バージョン 3.2 でビルドする必要があります。または、おそらくツリーの最上位です。clang -v は、マシンにあるバージョンを教えてくれます。Ubuntu 12.10 でさえ clang-3.2 を提供していないことがわかりました。LLVM の Web サイトからダウンロードします。Ubuntu 12.04 LTS 用のビルド済みバイナリがあります。このビルド ステップで make に clang を使用させるために、CC=clang と CXX=clang++ を設定してエクスポートする手順を見てきました。
libobjc2 がビルドされたら、インストール先に注意する必要があります。システムに古い libobjc.so.xy ライブラリ (これにより Obj-C のランタイム環境が提供されます) が既に存在する場合、独自のソースのコンパイルを開始するときに、clang またはリンカーが間違ったライブラリを選択している可能性があります。make install ステップを実行すると、libobjc2 ソースからビルドされた libobjc.so.4.6.0 が Ubuntu 12.04 と 12.10 の両方で /usr/local/lib にインストールされていることがわかりました。このパスは、libobjc2 インストール ステップでは設定されませんでした。
このライブラリを取得するには、環境変数 LD_LIBRARY_PATH に /usr/local/lib を追加する必要がありました。システムに他のバージョンがあるかどうかを確認するために、'locate libojbc.so' を試しても問題ありません。
最後に、libobjc2 の readme ( https://github.com/gnustep/gnustep-libobjc2#readme ) では、この新しいバージョンの gnustep ライブラリは 2 つの ABI をサポートし、各 ABI は ARC とブロックをサポートすると述べています。libobjc2 でコンパイルすることについて私が見たアドバイスは、コンパイルとリンクが期待されるランタイム バージョンも提供することです: -fobjc-runtime=gnustep. Ubuntu の Clang は、依然として古い ABI にデフォルト設定されています。-fobjc-nonfragile-abi は同じことを達成するかもしれませんが、フラグが廃止された、または廃止されると述べているのを見てきました。
OP エラーは、実際には、clang がコンパイルされた場所ではなく、a.out が実行されているステップから発生する可能性があります。おそらく、ダイナミック ローダーが従来の libobj.so を取得しています。繰り返しますが、locate を使用して、システムに複数のシステムがあるかどうかを確認します。