2013-07-18 5 views
0

CentOS 5.9 [gcc version 4.1.2 20080704 (Red Hat 4.1.2-54)]에서 컴파일 할 때. 내 응용 프로그램은 다음과 같은 오류와 함께 컴파일 실패 :컴파일러 오류 스택 추적

/opt/qt64/4.7.3/include/QtCore/qendian.h: In function ‘T qbswap(T) [with T = long long unsigned int]’: 
/opt/qt64/4.7.3/include/QtCore/qendian.h:278: error: ‘bswap_64’ was not declared in this scope 
/opt/qt64/4.7.3/include/QtCore/qendian.h: In function ‘T qbswap(T) [with T = unsigned int]’: 
/opt/qt64/4.7.3/include/QtCore/qendian.h:282: error: ‘bswap_32’ was not declared in this scope 
/opt/qt64/4.7.3/include/QtCore/qendian.h: In function ‘T qbswap(T) [with T = short unsigned int]’: 
/opt/qt64/4.7.3/include/QtCore/qendian.h:286: error: ‘bswap_16’ was not declared in this scope 

나는 코드가 MSVC2010 페도라 9에서 제대로 컴파일 같이 gcc version 4.3.0 20080428 (Red Hat 4.3.0-8) (GCC)] 모두 Qt는 4.7에 대해 컴파일 Qt는 4.7.3에 아무 잘못이 있다고 생각하지 않습니다. 3 사건없이.

제 질문은 GCC에서 다음 중 일부 또는 전부를 말하도록하는 방법입니다.이 오류가 발생하기 전에 코드의 마지막 위치 또는이 컴파일러 오류가 발생한 전체 코드 추적 또는 일부 다른 방법 내 코드를 수정하는 방법을 알아 내려면?

+0

CentOS는 아마도이 'bswap' 함수를 가지고 있지 않거나 다른 헤더에 있습니다. 확인 해봤 었니? –

+0

아니요. 어떻게 그걸 확인하겠습니까? – Ryan

+0

'grep -R bswap/usr/include/*' –

답변

0

궁극적으로, 문제에 대한 해결책은 파일 이전 byteswap.h 지명되었다하고는 byteswap.h의 다음 stdlib 버전 이전에 포함되고 있던 포함 경로가 있다고했다. 해당 파일에 bswap_64, bswap_32 또는 bswap_16의 정의가 없기 때문에 컴파일러 오류가 생성되었습니다.

해결 방법은 타사 라이브러리의 byteswap.h의 이름을 다른 이름으로 바꾸는 것이 었습니다.