2010-12-08 2 views
10
/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) 

파일의이 간단한 :왜 cc1plus : error : 인식 할 수없는 명령 행 옵션 "-arch"가 생깁니 까?

#include <stdlib.h> 

int main(int argc, char** argv) { 

    return (EXIT_SUCCESS); 
} 
+2

어떻게 구축 했습니까? gcc - 4.5.1은 표준 Apple이 아닙니다. – Mark

+0

macports를 사용하는 경우 : sudo port install gcc45 – simpatico

답변

9

-arch 옵션은 gcc에 애플 확장의 일부입니다. Apple Developer Tools (Xcode)에서 제공하는 gcc을 사용해야합니다.

+0

고맙습니다. 지금 비슷한 문제가 있습니다 –

+0

명령 줄 도구를 설치했지만 여전히이 문제가 발생합니다. – MrROY

+0

MrRoy :'which g ++'와'g ++ --version'은 무엇을 보여줍니까? 첫 번째 버전은'/ usr/bin/g ++'이어야하고, OS X 10.8에서 현재 Xcode 4.6.3을 사용하는 경우, 후자는'i686-apple-darwin11-llvm-g ++ - 4.2 (GCC) 4.2.1이어야합니다. 애플 Inc. 빌드 5658) (LLVM 빌드 2336.11.00)'. –

1

-arch 옵션은 Apple에서 제공 한 gcc 버전에만 적용됩니다. CFLAGS (환경, makefile 또는 구성 옵션을 통해 설정할 수 있음)을 변경하여 -march 또는 -m32을 대신 사용하십시오. 예를 들어 :

 
configure CFLAGS='-m32 -O2' CC=gcc-4.5 

의 차이는 -march은 한 번에 하나를 생성하는 반면 당신은 유니버설 바이너리를 생성하기 위해 여러 -arch 옵션을 지정할 수있는 것 같다.

0

GCC의 macports 버전은 -arch 플래그를 지원하지 않습니다. Apple의 GCC는 실제 컴파일러를 호출하기 전에 몇 가지 특별한 플래그를 사용하는 실제 gcc를 감싸는 래퍼입니다. -arch 플래그는이 플래그 중 하나입니다. 지정된 각 아치에 대해 적절한 컴파일러를 호출 한 다음 lipo를 사용하여 모든 오브젝트 파일을 "뚱뚱한"오브젝트 파일로 다시 매시합니다.

MacCC GCC에서 작동하는 Apple GCC 랩퍼를 사용하는 데 약간 시간을 들였습니다. 에 관계없이 기계,

http://thecoderslife.blogspot.com/2015/07/building-with-gcc-46-and-xcode-4.html

1

이 오류는 여러 형태로 존재하거나 타입을 제작할 수 있습니다 자세한 내용을 원하는 경우에 당신은 여기에서 찾을 수 있습니다. 일반적으로 해결책은 정확한 크로스 컴파일러를 포함하도록 PATH 및 CROSS_COMPILE 변수를 변경하는 것입니다.

관련 문제