LINUX.ORG.RU

Сборка qt 32 под 64 bit ubuntu 16.04

 qt5 build


0

1

Пытаюсь собрать qt 5.11.1 (и 5.6.3 пробовал)
Вызываю ./configure -platform linux-g++-32 ...
Идет начальная сборка qmake, но в конце ошибка линковки

g++ -o "../bin/qmake" project.o [....] qlocale_unix.o -m32 -Wl,--gc-sections
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/5/libstdc++.so when searching for -lstdc++
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/5/libstdc++.a when searching for -lstdc++

$ dpkg -S /usr/lib/gcc/i686-linux-gnu/5/libstdc++.so 
libstdc++-5-dev:i386: /usr/lib/gcc/i686-linux-gnu/5/libstdc++.so

Т.е. он ищет не 32 битную либу stdc++, а 64 битную
Что я забыл сделать ?

★★★★★

Ответ на: комментарий от ZenitharChampion

а вот хз, в 1804 libstdc++-6-dev:i386 ставится, а в 1604 почему то нет
попробую завтра еще раз

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

странно, но вообще не находит пакет

sudo apt install libstdc++-6-dev:i386
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package libstdc++-6-dev:i386
E: Couldn't find any package by regex 'libstdc++-6-dev'

x905 ★★★★★
() автор топика

Т.е. он ищет не 32 битную либу stdc++, а 64 битную

А в /etc/ld.so.conf указано где искать 32 битные либы?

Ну и симлинки должны смотреть на соответствующие линкеры:

ld-linux-x86-64.so.2 - для 64 битных

ld-linux.so.2 - для 32 битных

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

Вроде как все есть

$ cat /etc/ld.so.conf.d/i386-linux-gnu.conf 
# Multiarch support
/lib/i386-linux-gnu
/usr/lib/i386-linux-gnu
/lib/i686-linux-gnu
/usr/lib/i686-linux-gnu

$ dpkg -S /usr/lib/i386-linux-gnu/libstdc++.so.6.0.21 
libstdc++6:i386: /usr/lib/i386-linux-gnu/libstdc++.so.6.0.21

x905 ★★★★★
() автор топика
Ответ на: комментарий от Samsky
$ ls -l /lib/ld-linux.so.2 
lrwxrwxrwx 1 root root 25 янв 15  2018 /lib/ld-linux.so.2 -> i386-linux-gnu/ld-2.23.so
x905 ★★★★★
() автор топика
Ответ на: комментарий от ZenitharChampion

файла /usr/lib/i386-linux-gnu/libstdc++.so не существовало
но сделал ссылку, пошло дальше
но по окончанию configure выдало ошибки:
ERROR: Qt requires a compliant STL library.
ERROR: C++11 <random> is required and is missing or failed to compile.

x905 ★★★★★
() автор топика
Ответ на: комментарий от ZenitharChampion
Checking for STL compatibility...
+ cd /home/user1/src/qt-everywhere-src-5.11.1_B32/config.tests/stl && /home/user1/src/qt-everywhere-src-5.11.1_B32/qtbase/bin/qmake "CONFIG -= qt debug_and_release app_bundle lib_bundle" "C
ONFIG += shared use_gold_linker warn_off console single_arch" /home/user1/src/qt-everywhere-src-5.11.1/qtbase/config.tests/stl
+ cd /home/user1/src/qt-everywhere-src-5.11.1_B32/config.tests/stl && MAKEFLAGS= /usr/bin/make
> g++ -c -m32 -pipe -O2 -std=gnu++11 -w -fPIC  -I/home/user1/src/qt-everywhere-src-5.11.1/qtbase/config.tests/stl -I. -isystem /usr/include/x86_64-linux-gnu/c++/5/x32 -I/home/user1/src/qt-e
verywhere-src-5.11.1/qtbase/mkspecs/linux-g++-32 -o stltest.o /home/user1/src/qt-everywhere-src-5.11.1/qtbase/config.tests/stl/stltest.cpp
> In file included from /usr/include/c++/5/random:49:0,
>                  from /usr/include/c++/5/bits/stl_algo.h:66,
>                  from /usr/include/c++/5/algorithm:62,
>                  from /home/user1/src/qt-everywhere-src-5.11.1/qtbase/config.tests/stl/stltest.cpp:48:
> /usr/include/c++/5/bits/random.h:107:26: error: expected unqualified-id before ‘__int128’
>        { typedef unsigned __int128 type; };
>                           ^
> Makefile:168: recipe for target 'stltest.o' failed
> make: *** [stltest.o] Error 1
test config.qtbase.tests.stl FAILED
x905 ★★★★★
() автор топика
Ответ на: комментарий от ZenitharChampion

Мне кажется это борьба с неправильной сборкой - либо qt позволяет нормально собрать 32 бита из под 64 либо нет.
Буду гуглить qt форумы, возможно еще в начале я чтото забыл.

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

да, так можно, но хотелось настроить сборку в своей, рабочей 64 битной системе

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

Есть вариант «сделать chroot в директорию или раздел, в которой(ом) установлена другая система». Тогда без виртуалки.

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