Почему я получаю cc1plus: error: нераспознанный параметр командной строки "-arch"? - PullRequest
11 голосов
/ 08 декабря 2010
/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) 

Этот простой файл:

#include <stdlib.h>

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

    return (EXIT_SUCCESS);
}

Ответы [ 4 ]

10 голосов
/ 08 декабря 2010

Параметр -arch является частью расширения Apple до gcc. Вам необходимо использовать gcc, предоставляемый Apple Developer Tools, Xcode.

1 голос
/ 16 мая 2013

Эта ошибка существует во многих формах, независимо от машины или типа сборки. В общем, решение состоит в том, чтобы изменить переменные PATH и CROSS_COMPILE, чтобы включить правильный кросс-компилятор.

1 голос
/ 18 ноября 2011

Опция -arch доступна только в предоставленной Apple версии gcc.Измените CFLAGS (которое может быть установлено через вашу среду, ваш make-файл или параметры конфигурации), чтобы вместо него использовалось -march или -m32.Например:

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

Разница, по-видимому, в том, что вы можете указать несколько опций -arch для генерации универсальных двоичных файлов, тогда как -march генерирует только одну за раз.

0 голосов
/ 02 марта 2012

Версия GCC для macports не поддерживает флаг -arch.Оказывается, что GCC от Apple - это оболочка для реального gcc, которая учитывает несколько специальных флагов перед вызовом реального компилятора.Флаг -arch является одним из этих флагов.Он вызывает соответствующий компилятор для каждой из указанных арок, а затем использует lipo для объединения всех объектных файлов в «толстый» объектный файл.

Я только что потратил немного времени на получение этого Apple GCCОболочка, работающая с Macports GCC.Если вам нужны подробности, вы можете найти их здесь:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...