2010-12-17 10 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 파일을 모두 컴파일하는 대신 한 번에 하나씩 컴파일 한 다음 적절하게 연결하십시오. 당신의 .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

g ++ 매개 변수 -arch i386 :

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

는 것이 맞습니까?