我正在尝试在我的计算机上安装最新版本的 gcc 4.8.2。我尝试过来自 MacPorts 的安装以及与 gfortran 二进制安装一起安装的安装。
对于最小源文件,我会根据 -arch 标志的顺序收到错误。
具体来说, -arch x86_64 -arch i386
(或单独使用其中任何一个)的工作原理是:
% /opt/local/bin/gcc-mp-4.8 -arch x86_64 -arch i386 conftest.c
% /opt/local/bin/gcc-mp-4.8 -arch x86_64 -arch i386 -O3 conftest.c
但-arch i386 -arch x86_64
失败了:
% /opt/local/bin/gcc-mp-4.8 -arch i386 -arch x86_64 conftest.c
/var/folders/6l/7gzvw1zs42sbhj7_hlrpykfm0000gv/T//cc6JCBdP.s:5:bad register name `%rbp'
/var/folders/6l/7gzvw1zs42sbhj7_hlrpykfm0000gv/T//cc6JCBdP.s:7:bad register name `%rsp'
/var/folders/6l/7gzvw1zs42sbhj7_hlrpykfm0000gv/T//cc6JCBdP.s:10:bad register name `%rbp'
% /opt/local/bin/gcc-mp-4.8 -arch i386 -arch x86_64 -O3 conftest.c
/var/folders/6l/7gzvw1zs42sbhj7_hlrpykfm0000gv/T//ccs67E0q.s:34:FATAL:Bad fx_size (0x8) in fix_to_relocation_info()
帮助!
最小来源:
int main ()
{
return 0;
}
详情请见:
% /opt/local/bin/gcc-mp-4.8 --version
gcc-mp-4.8 (MacPorts gcc48 4.8.2_0+universal) 4.8.2
Copyright (C) 2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
答案1
gcc
其开发人员发布的/g++
不支持-arch
同时支持多个标志。只有 Apple 修改的gcc
/版本g++
(例如 Apple 发布的 Xcode 版本低于 4.2 的版本)才支持该功能。
要使用非 Apple gcc
/为多种架构进行编译g++
,请分别为每种架构进行编译,然后使用 合并结果lipo
。
/opt/local/bin/gcc-mp-4.8 -arch x86_64 -o conftest-x86_64 conftest.c
/opt/local/bin/gcc-mp-4.8 -arch i386 -o conftest-i386 conftest.c
lipo conftest-x86_64 conftest-i386 -create -output conftest