2010-12-17 1 views
1

Chaque fois que je tente de compiler mon projet (avec la ligne de commande g++ *.hpp *.cpp 2> log.txt), qui est ce que je reçois:G ++ Avertissement: construit pour le format de fichier non pris en charge qui n'est pas l'architecture étant liée

log.txt:

ld: warning: in configfile.hpp, file was built for unsupported file format which is not the architecture being linked (x86_64) 
ld: warning: in erase.hpp, file was built for unsupported file format which is not the architecture being linked (x86_64) 
ld: warning: in filehandler.hpp, file was built for unsupported file format which is not the architecture being linked (x86_64) 
ld: warning: in insert.hpp, file was built for unsupported file format which is not the architecture being linked (x86_64) 
ld: warning: in operation.hpp, file was built for unsupported file format which is not the architecture being linked (x86_64) 

Des idées de pourquoi cela se passe-t-il? Je suis sous OSX 10.6 (en utilisant les derniers outils de développement)

Répondre

3

Vous compilez des fichiers d'en-tête (.hpp) que vous ne devriez pas encore faire. Compilez uniquement les fichiers source (.cpp)

Plutôt que de compiler tous les fichiers .cpp, compilez-les un à la fois, puis reliez-les de manière appropriée.

g++ -c x.cpp 
g++ -c y.cpp 
g++ -c z.cpp 

g++ -o tst x.o y.o z.o 

Notez qu'un seul de vos fichiers .cpp peut avoir une fonction main() - sinon le système d'exploitation ne saura pas où le point d'entrée est.

+0

La compilation de fichiers d'en-tête produit des en-têtes précompilés qui font partie du processus de compilation. Ses erreurs sont liées à la phase de liaison. – flumpb

+0

@kisplit - Je voudrais le voir le distiller jusqu'à ce qui fonctionne, étape par étape, puis il peut pré-compiler. Il ne semble pas comprendre le processus ici et j'ai donc pensé qu'un petit pas à la fois pourrait lui être utile. – KevinDTimm

0

Je ne possède pas de Mac, donc je vous donne la version Linux de ce qu'il faut faire quand ça arrive.

Rechercher une version multilib de gcc et recompiler avec le commutateur -m32

g++ *.hpp *.cpp -m32 

Essayez ceci. Vous pouvez compiler des fichiers d'en-tête avec gcc pour produire des en-têtes pré-compilés.

0

Le g ++ paramètre -arch i386 devrait faire l'affaire pour vous:

g++ *.hpp *.cpp -m32 -arch i386 

Est-ce exact?

Questions connexes