2013-07-18 4 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 

Я не думаю, что нет ничего плохого с Qt 4.7.3 как код правильно компилирует на MSVC2010 и Fedora 9 [gcc version 4.3.0 20080428 (Red Hat 4.3.0-8) (GCC)] и компилировать против Qt 4.7. 3 без инцидентов.

Мой вопрос: есть ли способ заставить GCC сказать мне все или все из следующего: Последнее место в моем коде перед достижением этой ошибки ИЛИ Полная трассировка кода, которая привела к этой ошибке компилятора ИЛИ какой-либо другой метод для меня выяснить, как исправить мой код?

+0

У CentOS, вероятно, нет этих функций 'bswap', или они находятся в другом заголовке. Ты проверил? –

+0

Нет, я этого не делал. Как я могу это проверить? – Ryan

+0

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

ответ

0

В конечном счете, решение этой проблемы в том, что там был файл в начале пути включают в себя, что был назван byteswap.h и что в настоящее время включены до версии STDLIB из byteswap.h. Поскольку этот файл не содержал определений bswap_64, bswap_32 или bswap_16, были созданы ошибки компилятора.

Исправление состоит в том, чтобы переименовать byteswap.h в стороннюю библиотеку на другое имя, которое не конфликтует.