LINUX.ORG.RU

Сборка Qt из исходников (хостовая ось x64, сборка под x86)

 , , ,


0

2

Всем привет, как можно собрать Qt на машине, где OS x64, а либы от Qt нужны для x86. При линковке ошибки:

../usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld: skipping incompatible /usr/lib64/gcc/x86_64-suse-linux/10/libstdc++.so when searching for -lstdc++
/usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld: skipping incompatible /usr/lib64/gcc/x86_64-suse-linux/10/libstdc++.a when searching for -lstdc++
/usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld: cannot find -lstdc++
/usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld: cannot find libgcc_s.so.1
/usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld: skipping incompatible /usr/lib64/gcc/x86_64-suse-linux/10/libgcc.a when searching for -lgcc
/usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld: cannot find -lgcc
collect2: error: ld returned 1 exit status

configure:

./cofigure -debug-and-release -static -static-runtime -opensource -confirm-license -platform linux-g++-32 -qt-zlib -qt-libpng -qt-libjpeg -skip qtwebchannel -skip qtwebengine -skip qtwebsockets -skip qtwebview -nomake examples -nomake tests

Но почему-то все равно использует lib64, а не lib (32)

Прошу прощения если напишу нерабочий совет. Что если попробовать скрипт linux32. Запустив его, возможно система будет думать что она 32-битная и какие-то вспомогательные скрипты схватят 32 и соберется как надо

Иногда это мне помогало реально. Запусти linux32, затем configure

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

У тебя OpenSuse, не знаю как там это сделать, но нужно доустановить 32-битные версии твоих libstdc++ libgcc_s и libgcc. В Debian это dev-пакеты с суффиксом :i386

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

Я собирал на хосте x86-64 пакеты под aarch64.

Используй build вместе с qemu, а не засирай себе систему по совету выше :)

man build короче

gutaper ★★★★ ()
Последнее исправление: gutaper (всего исправлений: 2)
Ответ на: комментарий от I-Love-Microsoft

Я поставил x32 bits gcc и dependencies для Qt (из официальной документации). Запускаю configure:

./configure -debug -static -static-runtime -opensource -confirm-license -platform linux-g++-32 -qt-zlib -qt-libpng -xkbcommon -skip qtwebchannel -skip qtwebengine -skip qtwebsockets -skip qtwebview -nomake examples -nomake tests

И после этого ошибки от OpenGL (он его найти не может, хотя все зависимости я поставил):

ERROR: The OpenGL functionality tests failed!
You might need to modify the include and library search paths by editing QMAKE_INCDIR_OPENGL[_ES2],
QMAKE_LIBDIR_OPENGL[_ES2] and QMAKE_LIBS_OPENGL[_ES2] in the mkspec for your platform

dependencies ставил так:

sudo zypper in xorg-x11-libxcb-devel-32bit xcb-util-devel-32bit xcb-util-image-devel-32bit xcb-util-keysyms-devel-32bit xcb-util-renderutil-devel-32bit xcb-util-wm-devel-32bit xorg-x11-devel-32bit libxkbcommon-x11-devel-32bit libxkbcommon-devel-32bit libXi-devel-32bit
continue ()
Последнее исправление: continue (всего исправлений: 3)
Ответ на: комментарий от I-Love-Microsoft
i+ | Mesa-32bit                       | System for rendering 3-D graphics                                           | пакет

странно. вроде установлено же

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

Нужно libgl как минимум еще, в версии devel. Это я без уверенности пишу, ведь я Debian/Ubuntu-user

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

Да, действительно, Mesa-libGL-devel стоит, и оно я так понял, от архитектуры не зависит. Или зависит? Нету -32bit версии такого пакета?

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

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

x905 ★★★★★ ()
Ответ на: комментарий от I-Love-Microsoft
> main.cpp:2:10: fatal error: windows.h: No such file or directory
>     2 | #include <windows.h>
>       |          ^~~~~~~~~~~
> compilation terminated.
> gmake: *** [Makefile:169: main.o] Error 1

я тут открыл config.log и там такое, что тут происходит?

сам config.log


На счет битности Mesa-libGL-devel

continue ()
Последнее исправление: continue (всего исправлений: 1)
Ответ на: комментарий от continue

configure проверил, а не под винду ли сборка идёт.

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

Хорошо что получилось!

В OpenSuse как, есть lib и lib64? Что покажет file /usr/lib/libGL.so? ELF 64-bit LSB или ELF 32-bit LSB?

I-Love-Microsoft ★★★★★ ()
Ответ на: комментарий от I-Love-Microsoft
continue@localhost:~> file /usr/lib/libGL.so
/usr/lib/libGL.so: symbolic link to libGL.so.1
continue@localhost:~> file /usr/lib/libGL.so.1
/usr/lib/libGL.so.1: symbolic link to libGL.so.1.7.0
continue@localhost:~> file /usr/lib/libGL.so.1.7.0
/usr/lib/libGL.so.1.7.0: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, BuildID[sha1]=4365725736f79fd94ee7033fbc9035b47b8ed6b9, stripped
continue@localhost:~> file /usr/lib64/libGL.so.1.7.0
/usr/lib64/libGL.so.1.7.0: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=8fcefe9eb80aacc3a201b9921dfcd9241546d8aa, stripped
continue ()
Последнее исправление: continue (всего исправлений: 1)
Ограничение на отправку комментариев: только для зарегистрированных пользователей