gcc 4.8 no MacOS falha dependendo da ordem do -arch

2

Estou tentando obter uma versão recente do gcc 4.8.2 em minha máquina. Eu tentei instalações que vêm de MacPorts, bem como o que é instalado ao lado da instalação binária do gfortran.

Para um arquivo de origem mínimo, recebo erros dependendo da ordem dos sinalizadores -arch.

Especificamente, -arch x86_64 -arch i386 (ou qualquer um deles sozinho) funciona:

% /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

Mas -arch i386 -arch x86_64 falha:

% /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()

Ajuda!

A fonte mínima:

 int main ()
 {
  return 0;
 }

Para informações:

% /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.
    
por Andrew Jaffe 11.04.2014 / 14:20

1 resposta

0

gcc / g++ , conforme distribuído por seus desenvolvedores, não suporta vários -arch flags simultaneamente. Apenas as versões modificadas pela Apple de gcc / g++ , por exemplo, aquelas distribuídas pela Apple com versões do Xcode anteriores à 4.2, suportam isso.

Para compilar para várias arquiteturas usando um não-Apple gcc / g++ , compile para cada arquitetura separadamente e combine os resultados usando 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
    
por 17.05.2016 / 12:06

Tags