2010-12-17 16 views
1

私は(コマンドラインg++ *.hpp *.cpp 2> log.txtで)私のプロジェクトをコンパイルしようとするたびに、それは私が何を得るのです。G ++警告:サポートされていないファイル形式のために構築されたリンクされているアーキテクチャではありません

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) 

これはなぜ起こっているのアイデアですか?私はOSX 10.6の下にあります(最新の開発ツールを使用しています)

答えて

3

まだやってはいけないヘッダファイル(.hpp)をコンパイルしています。

すべての.cppファイルをコンパイルするのではなく、一度に1つずつコンパイルし、適切にリンクします。あなたの.cppファイルの一つだけが、main()関数を持つことができます

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

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

注 - エントリポイントがどこにあるかそうでないOSは知ることができません。

+0

ヘッダーファイルをコンパイルすると、コンパイルプロセスの一部である事前コンパイル済みヘッダーが生成されます。彼の誤りはリンク段階に関連している。 – flumpb

+0

@kisplit - 私は彼が何をうまく機能するかを段階的に見直してみたいと思っています。そして、彼はあらかじめコンパイルすることができます。彼がここでのプロセスを理解しているようには思われないので、一度に少し歩いていると、彼はうまくいくと思った。 – KevinDTimm

0

私はMacを所有していないので、これが起こったときの対処方法をLinux版で伝えています。

GCCのmultilibのバージョンを探し、-m32スイッチで

g++ *.hpp *.cpp -m32 

を再コンパイルするには、これを試してみてください。ヘッダファイルをgccでコンパイルすると、コンパイル済みのヘッダを生成することができます。

0

グラム++パラメータ-arch i386はあなたのためにトリックを行う必要があります。

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

は正しいことですか?

関連する問題