Eu já encontrei a resposta: você precisa compilar usando g++ -arch i386
. O vinculador parece querer apenas vincular no modo de 32 bits.
Para um projeto de plataforma cruzada, estamos usando o wxwidgets para criar uma GUI de plataforma cruzada em c ++. O WxWidgets foi instalado no Mac OSX 10.7 usando macports. Não temos problemas em compilar nosso código-fonte no Linux e no Windows.
Compilar nossas diferentes classes funciona bem no Mac. No entanto, quando tentamos vincular os objetos, recebemos os seguintes erros / avisos:
ld: warning: ignoring file ../../obj/games.o, file was built for unsupported file format which is not the architecture being linked (i386)
ld: warning: ignoring file ../../obj/lobby.o, file was built for unsupported file format which is not the architecture being linked (i386)
ld: warning: ignoring file ../../obj/ConfigFile.o, file was built for unsupported file format which is not the architecture being linked (i386)
ld: warning: ignoring file ../../obj/net.o, file was built for unsupported file format which is not the architecture being linked (i386)
ld: warning: ignoring file ../../obj/protocol.o, file was built for unsupported file format which is not the architecture being linked (i386)
Undefined symbols for architecture i386:
"_main", referenced from:
start in crt1.10.6.o
ld: symbol(s) not found for architecture i386
collect2: ld returned 1 exit status
Parece que o gcc não pode vincular os arquivos. Quando queremos compilar e vincular um arquivo de uma só vez, obtemos um programa em funcionamento. Como agora temos vários arquivos, os quais queremos vincular, não podemos fazer isso de uma só vez. Usamos o seguinte makefile:
Nosso código-fonte também está incluído. Eu uso a seguinte versão do gcc:
gcc --version
i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.9.00)
Copyright (C) 2007 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.
Alguém tem uma ideia de como podemos vincular esses arquivos?