Vinculando WXWidgets em C ++ em objetos do Mac OSX 10.7 não funcionando

1

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:

link

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?

    
por user23127 22.05.2012 / 17:04

1 resposta

1

Eu já encontrei a resposta: você precisa compilar usando g++ -arch i386 . O vinculador parece querer apenas vincular no modo de 32 bits.

    
por 23.05.2012 / 20:50