GCC 4.7 (tramite brew) continua a includere da "/usr/include/c++/4.2.1"

0

Questo mi sta facendo impazzire:

Ho bisogno di usare molte cose che semplicemente non vengono compilate con i compilatori clang / llvm standard forniti con Xcode 5 (su Mac OS X 10.8), quindi ho deciso di installare gcc47 tramite brew.

È andato tutto bene, ma quando provo a compilare le cose, ricevo diversi messaggi di errore e ho scoperto che alcuni inclusi provengono ancora da "/usr/include/c++/4.2.1", il che è davvero strano.

Qualcuno può spiegarmi come configurarlo in modo pulito?

Questi sono i passi che stavo facendo:

  • brew update
  • brew install gcc47
  • alias gcc = 'gcc-4.7'

brew mi ha avvisato che devo impostare LDFLAGS e CPPFLAGS , citando (riassunti):

  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

Quindi esportando LDFLAGS e CPPFLAGS tramite

        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"

dovrebbe fare il trucco (ho pensato)

Ma non è così. Continuo a ricevere messaggi come:

/usr/include/c++/4.2.1/bits/stl_vector.h:600:7: note: must qualify identifier to find this declaration in dependent base class push_back(const value_type& __x) ^

e semplicemente non capisco perché?

    
posta tamasgal 27.11.2013 - 16:48
fonte

1 risposta

1

quella nota si riferisce solo alle 4 librerie gmp, mpfr, libmpc, ppl e penso che significhi che se si usano queste devono essere prima del percorso di ricerca standard.

Il tuo problema è dove il compilatore sta cercando le intestazioni delle librerie standard (e le librerie successive). gcc defaults su / usr / include che è installato per i compilatori di Apple e che viene reindirizzato dalla versione al percorso che vedi.

Devi prima impostare esplicitamente i percorsi per cercare nel percorso dei compilatori hombrew

    
risposta data 27.11.2013 - 17:51
fonte

Leggi altre domande sui tag