c++ - paquetes - programas para antergos
¿Por qué obtengo cc1plus: error: opción de línea de comando no reconocida "-arch"? (4)
La opción -arch
es parte de las extensiones de Apple para gcc
. gcc
usar el gcc
suministrado por las herramientas para desarrolladores de Apple, Xcode
.
/usr/bin/make -f nbproject/Makefile-Debug.mk SUBPROJECTS= .build-conf
/usr/bin/make -f nbproject/Makefile-Debug.mk dist/Debug/GNU-MacOSX/cppapplication_1
mkdir -p build/Debug/GNU-MacOSX
rm -f build/Debug/GNU-MacOSX/main.o.d
g++ -arch i386 -c -g -MMD -MP -MF build/Debug/GNU-MacOSX/main.o.d -o build/Debug/GNU-MacOSX/main.o main.cpp
cc1plus: error: unrecognized command line option "-arch"
make[2]: *** [build/Debug/GNU-MacOSX/main.o] Error 1
make[1]: *** [.build-conf] Error 2
make: *** [.build-impl] Error 2
BUILD FAILED (exit value 2, total time: 311ms)
simpatico$ g++ -v
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/opt/local/libexec/gcc/x86_64-apple-darwin10/4.5.1/lto-wrapper
Target: x86_64-apple-darwin10
Configured with: ../gcc-4.5.1/configure --prefix=/opt/local --build=x86_64-apple-darwin10 --enable-languages=c,c++,objc,obj-c++,fortran,java --libdir=/opt/local/lib/gcc45 --includedir=/opt/local/include/gcc45 --infodir=/opt/local/share/info --mandir=/opt/local/share/man --datarootdir=/opt/local/share/gcc-4.5 --with-local-prefix=/opt/local --with-system-zlib --disable-nls --program-suffix=-mp-4.5 --with-gxx-include-dir=/opt/local/include/gcc45/c++/ --with-gmp=/opt/local --with-mpfr=/opt/local --with-mpc=/opt/local --enable-stage1-checking --disable-multilib --enable-fully-dynamic-string
Thread model: posix
gcc version 4.5.1 (GCC)
Este simple de un archivo:
#include <stdlib.h>
int main(int argc, char** argv) {
return (EXIT_SUCCESS);
}
La opción -arch
solo está en la versión de gcc
proporcionada por Apple. Cambie CFLAGS
(que se puede establecer a través de su entorno, su archivo MAKE o sus opciones de configuración) para que use -march
o -m32
en -m32
lugar. Por ejemplo:
configure CFLAGS=''-m32 -O2'' CC=gcc-4.5
La diferencia parece ser que puede especificar varias opciones de -arch
para generar binarios universales, mientras que -march
solo genera una a la vez.
Este error existe en muchas formas, independientemente de la máquina o el tipo de compilación. La solución, en general, es cambiar las variables PATH y CROSS_COMPILE para incluir el compilador cruzado correcto.
La versión macports de GCC no es compatible con el indicador -arch. Al final, el GCC de Apple es un envoltorio alrededor del gcc real que cumple algunas banderas especiales antes de llamar al compilador real. La bandera de la búsqueda es una de estas banderas. Llama al compilador apropiado para cada uno de los arcos especificados y luego usa lipo para mezclar todos los archivos de objeto en un archivo de objeto "grueso".
Acabo de pasar un poco de tiempo para que esta envoltura Apple GCC funcione con macports GCC. Si desea los detalles, puede encontrarlos aquí:
http://thecoderslife.blogspot.com/2015/07/building-with-gcc-46-and-xcode-4.html