C++ 为什么我得到 cc1plus: error: unrecognized command line option "-arch"?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/4391192/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Why do I get cc1plus: error: unrecognized command line option "-arch"?
提问by simpatico
/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)
This simple of a file:
这个简单的文件:
#include <stdlib.h>
int main(int argc, char** argv) {
return (EXIT_SUCCESS);
}
采纳答案by Ned Deily
The -arch
option is part of the Apple extensions to gcc
. You need to use the gcc
supplied by Apple's Developer Tools, Xcode
.
该-arch
选项是 Apple 对gcc
. 您需要使用gcc
Apple 的开发人员工具提供的Xcode
.
回答by Rob Kennedy
The -arch
option is only in the Apple-provided version of gcc
. Change CFLAGS
(which might be set via your environment, your makefile, or your configure options) so it uses -march
or -m32
instead. For example:
该-arch
选项仅在 Apple 提供的gcc
. 更改CFLAGS
(可能通过您的环境、makefile 或配置选项设置)以便它使用-march
或-m32
。例如:
configure CFLAGS='-m32 -O2' CC=gcc-4.5
The difference seems to be that you can specify multiple -arch
options to generate universal binaries, whereas -march
only generates one at a time.
不同之处似乎是您可以指定多个-arch
选项来生成通用二进制文件,而一次-march
只能生成一个。
回答by harbingerzjc
This error exists in many forms, regardless of the machine or build type. The solution, in general, is to change the PATH and CROSS_COMPILE variables to include the correct cross compiler.
无论机器或构建类型如何,此错误都以多种形式存在。通常,解决方案是更改 PATH 和 CROSS_COMPILE 变量以包含正确的交叉编译器。
回答by John Bowers
The macports version of GCC doesn't support the -arch flag. As it turns out Apple's GCC is a wrapper around the real gcc that honors a few special flags before calling the real compiler. The -arch flag is one of these flags. It calls the appropriate compiler for each of the archs specified and then uses lipo to mash all of the object files back together into a "fat" object file.
GCC 的 macports 版本不支持 -arch 标志。事实证明,Apple 的 GCC 是真正的 gcc 的包装器,它在调用真正的编译器之前会遵循一些特殊标志。-arch 标志是这些标志之一。它为每个指定的 archs 调用适当的编译器,然后使用 lipo 将所有目标文件重新组合成一个“胖”目标文件。
I just spent a little bit of time getting this Apple GCC wrapper working with macports GCC. If you want the details you can find them here:
我只是花了一点时间让这个 Apple GCC 包装器与 macports GCC 一起工作。如果您需要详细信息,可以在此处找到它们:
http://thecoderslife.blogspot.com/2015/07/building-with-gcc-46-and-xcode-4.html
http://thecoderslife.blogspot.com/2015/07/building-with-gcc-46-and-xcode-4.html