0

組み込みのアトミック操作は gcc-4.1.2 で導入されました。ただし、gcc 3.4.3 しかない OpenIndiana で gcc を使用しています。今私の質問は、gcc 3.4.3 でアトミック操作を使用する方法ですか? さらに、OpenIndiana で gcc 4.6.1 を使用しようとしましたが、いくつかのランタイム ライブラリについて不平を言うため、機能しません。うまく使った人いたら教えてください。

4

4 に答える 4

2

GCC コンパイラをアップグレードすることをお勧めします。GCC 3は古いものです。

GCC の新しいバージョンをインストールできない場合は、ソース コードから GCC 4.6.1 コンパイラをコンパイルしてみてください。(ソース ツリーの外にあるビルド ツリーでコンパイルすることを忘れないでください。また、すべての依存関係を忘れないでください)。

GCC 4.6.1 のコンパイルが失敗した理由について言及も説明もしていません。どのランタイム ライブラリについて不満がありましたか? インストール後にldconfigを実行しましたか?

于 2011-10-16T19:46:38.103 に答える
1

GCC は優れたインライン アセンブリ サポートを備えているため__asm、さまざまなアトミック op の独自のバリアントを作成するために使用できます。ただし、ターゲット プラットフォームに固有であるため、適切なバージョンに切り替えるには適切なマクロが必要です。

于 2011-10-16T16:23:20.430 に答える
0

atomic_ops(3C)Solaris では、代わりに libcインターフェイスにフォールバックすることもできます。これらはインライン化される場合とされない場合がありますが、使用するコンパイラに関係なく、常に使用できる (そして常に同じように動作する) ことが保証されています。

それ以上に、gcc をアップグレードするか、SunStudio 12.2 コンパイラを入手するか、またはその両方を提案します(これらはロイヤリティ フリーです。テスト目的でのみ使用する場合でも、動作するように作ればコードの品質が向上する傾向があります)。複数のコンパイラで ...)。はい、OpenSolaris ベースのディストリビューションにもインストール/実行できます。

于 2011-11-24T09:42:46.537 に答える
0

既存の回答に追加するには、Spec Files Extra Repositoryを見ましたか? 自分で使ったことはありませんが、gcc 4.6 コンパイラ パッケージを提供しているようです。

于 2011-10-16T19:50:39.417 に答える