2010-12-17 80 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)

不是編譯所有.cpp文件,而是一次編譯一個,然後適當地鏈接它們。

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

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

請注意,只有您的.cpp文件中的一個可以有一個main()函數 - 否則操作系統將不知道是哪裏的入口點是。

+0

編譯頭文件會生成預編譯的頭文件,這是編譯過程的一部分。他的錯誤與鏈接階段有關。 – flumpb 2010-12-17 05:29:29

+0

@kisplit - 我想看看他一步一步提煉出有用的東西,然後他可以預編譯。他似乎並不瞭解這裏的過程,所以我認爲一次一小步就可以爲他服務。 – KevinDTimm 2010-12-17 05:38:58

0

我沒有擁有一臺Mac,所以我給你提供了Linux版本,當發生這種情況時要做什麼。

查找GCC的multilib的版本並重新編譯與-m32開關

g++ *.hpp *.cpp -m32 

試試這個。您可以使用gcc編譯頭文件以生成預編譯頭文件。

0

的G ++參數-arch i386應該做的伎倆爲您提供:

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

是正確的嗎?

相關問題