LINUX.ORG.RU

Написать код с условием, что «для gcc 4.4 этот участок, а для 4.3 - другой» - возможно ли это?


0

1

Здравствуйте. Решил я скомпилировать эмулятор PlayStation 2, pcsx2, в Debian Lenny 5.0. Система умеренно старая, и скомпилировавшийся бинарник запустится на бОльшем количестве компьютеров, чем скомпилированный в новом дистрибутиве Linux. Я это сделал, но возникала ошибка:

Linking CXX static library libUtilities.a
[ 30%] Built target Utilities
Scanning dependencies of target x86emitter
[ 30%] Building CXX object common/src/x86emitter/CMakeFiles/x86emitter.dir/3dnow.cpp.o
[ 31%] Building CXX object common/src/x86emitter/CMakeFiles/x86emitter.dir/cpudetect.cpp.o
/home/kanotix/pcsx2-read-only/trunk/common/include/intrin_x86.h: Assembler messages:
/home/kanotix/pcsx2-read-only/trunk/common/include/intrin_x86.h:842: Error: no such instruction: `xgetbv'
make[2]: *** [common/src/x86emitter/CMakeFiles/x86emitter.dir/cpudetect.cpp.o] Error 1
make[1]: *** [common/src/x86emitter/CMakeFiles/x86emitter.dir/all] Error 2
make: *** [all] Error 2
Ошибка полностью решилась откатом этого коммита. Стёр буквально 10 строк, и всё заработало. Мой вопрос такой, можно ли написать код программы на C++ так, чтобы для компилятора версии 4.3 код был один, а для 4.4 - другим, для того чтобы не терять совместимость между компиляторами? Создал по этому поводу Issue.

О, мне там уже ответили что «Not a bug».

ZenitharChampion ★★★★★
() автор топика
Ответ на: комментарий от anonymous

Спасибо! Напишу им патч по твоему совету, если у меня получится.

ZenitharChampion ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.