LINUX.ORG.RU

Сборка Qt на AMD Geode LX800 — illegal instruction

 , ,


0

2

Всем привет. Есть необходимость писать/запускать/отлаживать некий софт в среде QtCreator на древнем компьютере с процом AMD Geode LX800.

На этот комп без проблем встал стабильный debian с ядром 3.16.0-4-586. Ок, ставим обычный софт из реп, все работает.

Ставим qtcreator — при запуске выдает «illegal instruction». Я решил, что имеет место некая несовместимость бинарников из реп с имеющимся процом.

Попробовал скачать исходники (qt-everywhere-opensource-src-5.7.0) и собрать их, та же самая фигня:

cd widgets/ && ( test -e Makefile || /home/user/Downloads/qt-everywhere-opensource-src-5.7.0/qtbase/bin/qmake /home/user/Downloads/qt-everywhere-opensource-src-5.7.0/qtbase/src/widgets/widgets.pro -qtconf /home/user/Downloads/qt-everywhere-opensource-src-5.7.0/qtbase/bin/qt.conf -o Makefile ) && make -f Makefile 
Illegal instruction
make[3]: Entering directory '/home/user/Downloads/qt-everywhere-opensource-src-5.7.0/qtbase/src/widgets'
perl /home/user/Downloads/qt-everywhere-opensource-src-5.7.0/qtbase/mkspecs/features/data/unix/findclasslist.pl < QtWidgets.version.in > QtWidgets.version
/home/user/Downloads/qt-everywhere-opensource-src-5.7.0/qtbase/src/widgets/uic_wrapper.sh dialogs/qfiledialog.ui -o .uic/ui_qfiledialog.h
Makefile:1809: recipe for target '.uic/ui_qfiledialog.h' failed
make[3]: *** [.uic/ui_qfiledialog.h] Illegal instruction
make[3]: Leaving directory '/home/user/Downloads/qt-everywhere-opensource-src-5.7.0/qtbase/src/widgets'
Makefile:551: recipe for target 'sub-widgets-make_first' failed
make[2]: *** [sub-widgets-make_first] Error 2
make[2]: Leaving directory '/home/user/Downloads/qt-everywhere-opensource-src-5.7.0/qtbase/src'
Makefile:45: recipe for target 'sub-src-make_first' failed
make[1]: *** [sub-src-make_first] Error 2
make[1]: Leaving directory '/home/user/Downloads/qt-everywhere-opensource-src-5.7.0/qtbase'
Makefile:77: recipe for target 'module-qtbase-make_first' failed
make: *** [module-qtbase-make_first] Error 2

Пока пробую найти что-нибудь типа опций сборки qt, мне кажется, надо их настраивать.

Проблема в том, что configure и make на этом железе требуют супер-много времени. Я бы рад поэксперементировать, попересобирать, но требуется целый день, чтобы увидеть результат, получилось или нет.

Может кто-нибудь сталкивался и сразу знает ответ, что нужно сделать, чтобы заработало?

AMD Geode LX800

Отнеси в музей.

что нужно сделать, чтобы заработало?

Отключить всё, что не поддерживается твоим подобием процессора. Например SSE.

Stil ★★★★★ ()

Возможно придётся покупать процессор. У AMD Geode LX800 видимо отсутствует поддержка SSE2?

Компилируй c -no-sse2 / -no-sse, хотя, скорее всего отвалится половина модулей. Тот же Qt Creator требует QtDeclarative, который вроде юзает SSE2.

P.S. а можно инфу из cat /proc/cpuinfo?

EXL ★★★★★ ()

Я бы рад поэксперементировать, попересобирать, но требуется целый день, чтобы увидеть результат, получилось или нет.

Заюзай distcc на норм тачке?

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

Компилируй c -no-sse2 / -no-sse, хотя, скорее всего отвалится половина модулей.

Они что на асме? Если нет, то конпелятор просто другой код сгенерит. Недавно как раз для одного оч.крупного банка собирали софт под подобные ведра. Брат жиф.

anonymous ()

Я бы рад поэксперементировать, попересобирать, но требуется целый день, чтобы увидеть результат, получилось или нет

Что же мешает собрать Qt с нужными параметрами на любой многоядерной современной тачке? С -no-sse2 / -no-sse, как писали выше.

I-Love-Microsoft ★★★★★ ()
Ответ на: комментарий от Stil

Отключить всё, что не поддерживается твоим подобием процессора. Например SSE.

Поставил собираться с опциями:

-no-sse2 ........... Do not compile with use of SSE2 instructions.
-no-sse3 ........... Do not compile with use of SSE3 instructions.
-no-ssse3 .......... Do not compile with use of SSSE3 instructions.
-no-sse4.1 ......... Do not compile with use of SSE4.1 instructions.
-no-sse4.2 ......... Do not compile with use of SSE4.2 instructions.

Будем посмотреть.

s3rjke ()
Ответ на: комментарий от EXL

Заюзай distcc на норм тачке?

Ща почитаем, что это. Спасибо.

s3rjke ()
Ответ на: комментарий от I-Love-Microsoft

Что же мешает собрать Qt с нужными параметрами на любой многоядерной современной тачке? С -no-sse2 / -no-sse, как писали выше.

Я просто не в курсе, как оно делается, раньше такой потребности не возникало. Поэтому двигался по пути наименьшего сопротивления. Видимо, настало время разобраться. :-)

s3rjke ()
Ответ на: комментарий от s3rjke

Поставил собираться с опциями

Так что же в /proc/cpuinfo?

bormant ★★★★★ ()
Ответ на: комментарий от EXL
cat /proc/cpuinfo 
processor	: 0
vendor_id	: AuthenticAMD
cpu family	: 5
model		: 10
model name	: Geode(TM) Integrated Processor by AMD PCS
stepping	: 2
microcode	: 0x8b
cpu MHz		: 498.053
cache size	: 128 KB
fdiv_bug	: no
f00f_bug	: no
coma_bug	: no
fpu		: yes
fpu_exception	: yes
cpuid level	: 1
wp		: yes
flags		: fpu de pse tsc msr cx8 sep pge cmov clflush mmx mmxext 3dnowext 3dnow vmmcall
bogomips	: 996.10
clflush size	: 32
cache_alignment	: 32
address sizes	: 32 bits physical, 32 bits virtual
power management:
s3rjke ()
Ответ на: комментарий от s3rjke

А вот -3dnow задал бы явно, раз он имеется. Хоть где-то будет ускорение.

EXL ★★★★★ ()
Ответ на: комментарий от bormant

Спасибо, посмотрел архивчик, но там вроде, нету IDE qtcreator?

s3rjke ()
Ответ на: комментарий от s3rjke

Только надо не забывать что дистрибутив на таргете не должен быть слишком протухшим (или отличным о того где собирали), а то вроде не заведется то что собрано...

I-Love-Microsoft ★★★★★ ()

Про убийтсво sse* правильно сказали, мне это помогло всё скомпилять на Intel Core 2 Duo. http://kakadu.github.io/lablqt/tutorial2.html#qt5

И ещё ты компиляешь из тарболла. Может там тоже можно указать что компилять надо не всё, но в гитовской версии точно можно. Тогда должно быть быстрее.

Kakadu ()
Ответ на: комментарий от I-Love-Microsoft

В обоих местах debian stable. Версии ведра совпадают.

Сейчас пробую скомпилить qt на нормальной машине с такими опциями:

./configure -no-sse2 -no-sse3 -no-ssse3 -no-sse4.1 -no-sse4.1 -no-sse4.2 -platform linux-g++-32  -prefix /home/user/qt5
s3rjke ()
Ответ на: комментарий от s3rjke

Надеюсь этого достаточно и дополнительно задавать архитектуру не требовалось.

I-Love-Microsoft ★★★★★ ()
Ответ на: комментарий от I-Love-Microsoft

Ну, как сказать... Дело за малым, скомпилить qt. Т.е. еще день на войну с ошибками компиляции. :-)

s3rjke ()
Ответ на: комментарий от s3rjke

/home/user/qt5

Не правильно. Ставь в /opt/necro-qt5 или типа того – в qmake будут защиты какие-то пути, поэтому чтобы работало без танцев с бубном пути на хосте и таргете должны совпадать...

Stil ★★★★★ ()

В общем, на тачке с x64-системой сборка разваливается с очень странными ошибками.

Буду собирать дома, на x32-виртуалке. Завтра отпишусь, завелось или нет.

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