Este me está volviendo loco:
Necesito usar muchas cosas que simplemente no se compilan con los compiladores clang / llvm estándar que vienen con Xcode 5 (en Mac OS X 10.8), así que decidí instalar gcc47 a través de brew.
Todo salió bien, pero cuando trato de compilar cosas, recibo varios mensajes de error y descubrí que algunos incluidos aún vienen de "/usr/include/c++/4.2.1", lo cual es realmente extraño.
¿Puede alguien explicarme cómo configurarlo de una manera limpia?
Estos son los pasos que estaba haciendo:
- actualización de cerveza
- brew install gcc47
- alias gcc = 'gcc-4.7'
brew me advirtió que tengo que configurar LDFLAGS
y CPPFLAGS
, citando (resumido):
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
Así que exportamos LDFLAGS
y CPPFLAGS
a través de
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"
debería hacer el truco (pensé).
Pero no lo hace. Sigo recibiendo mensajes como:
/usr/include/c++/4.2.1/bits/stl_vector.h:600:7: nota: debe calificar Identificador para encontrar esta declaración en la clase base dependiente. push_back (const value_type & __x) ^
y simplemente no entiendo por qué?