GCC 4.7(brew経由)は、「/ usr / include / c ++ / 4.2.1」からインクルードし続けます


0

これは私を夢中にさせています:

Xcode 5(Mac OS X 10.8)に付属している標準のclang / llvmコンパイラではコンパイルできないものをたくさん使用する必要があるため、gcc47をbrewでインストールすることにしました。

すべてはうまくいきましたが、コンパイルしようとすると、いくつかのエラーメッセージが表示され、「/ usr / include / c ++ / 4.2.1」からのインクルードがまだあることがわかりました。これは本当に奇妙です。

誰でもきれいに設定する方法を説明できますか?

これらは私がしていたステップです:

  • 醸造アップデート
  • gcc47をインストールする
  • エイリアスgcc = 'gcc-4.7'

醸造は、私が設定していることを私に警告LDFLAGSしてCPPFLAGS(要約)、引用します:

  This formulas are keg-only: so they were not symlinked into /usr/local.
    Conflicts with gmp, mpfr, libmpc, ppl in main repository.

    Generally there are no consequences of this for you. If you build your
    own software and it requires these formulas, you'll need to add to your
    build variables:
        LDFLAGS:  -L/usr/local/opt/gmp4/lib
        CPPFLAGS: -I/usr/local/opt/gmp4/include

        LDFLAGS:  -L/usr/local/opt/mpfr2/lib
        CPPFLAGS: -I/usr/local/opt/mpfr2/include

        LDFLAGS:  -L/usr/local/opt/libmpc08/lib
        CPPFLAGS: -I/usr/local/opt/libmpc08/include


        LDFLAGS:  -L/usr/local/opt/ppl011/lib
        CPPFLAGS: -I/usr/local/opt/ppl011/include

        LDFLAGS:  -L/usr/local/opt/cloog-ppl015/lib
        CPPFLAGS: -I/usr/local/opt/cloog-ppl015/include

エクスポートLDFLAGSCPPFLAGS経由

        export LDFLAGS="${LDFLAGS} -L/usr/local/opt/gmp4/lib -L/usr/local/opt/mpfr2/lib -L/usr/local/opt/libmpc08/lib -L/usr/local/opt/ppl011/lib -L/usr/local/opt/cloog-ppl015/lib"

        export CPPFLAGS="${CPPFLAGS} -I/usr/local/opt/gmp4/include -I/usr/local/opt/mpfr2/include -I/usr/local/opt/libmpc08/include -I/usr/local/opt/ppl011/include -I/usr/local/opt/cloog-ppl015/include"

トリックを行う必要があります(私は思った)。

しかし、そうではありません。次のようなメッセージが引き続き表示されます。

/usr/include/c++/4.2.1/bits/stl_vector.h:600:7:注:従属ベースクラスpush_back(const value_type&__x)でこの宣言を見つけるには識別子を修飾する必要があります^

そして、私は単に理由を理解していませんか?


ただ、これらの5つのライブラリではなく、標準ライブラリのためではありません- -あなたは明示的に設定する必要がある場合、コンパイルはからのベクトルを含んでなるだろう
マーク・

1
@Mark Ah OK、標準ライブラリ/インクルードのパスをLDFLAGSandに追加するだけCPPFLAGSですか?
タマスガル

自作gccを指すようにmakefileを編集し、エイリアスを作成しないでください。
user1256923

回答:


1

そのメモは4つのライブラリgmp、mpfr、libmpc、pplを参照しているだけで、これらを使用する場合は標準の検索パスの前にある必要があると思います。

問題は、コンパイラが標準ライブラリヘッダー(およびそれ以降のライブラリ)を探す場所です。gccのデフォルトは/ usr / includeで、これはAppleのコンパイラ用にインストールされ、バージョンごとに表示されるパスにリダイレクトされます。

最初にhombrewコンパイラーのパスを調べるために、パスを明示的に設定する必要があります


設定を意味しますかLDFLAGSCPPFLAGSまたはチェックする必要のある他の変数がありますか?
タマスガル

まず、単純なHello Worldのアプリをやってみてください-そして、その作業を取得-それ以外の場合は、我々は全体のメイクファイルを参照する必要があるかもしれません-耀輝は、あなたが打ち鳴らすを使用することはできませんよろしいです-あなたは、特定の問題がある場合には、SOに尋ねる価値があるかもしれない
マーク
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.