Russian Qt Forum

Qt => Установка, сборка, отладка, тестирование => Тема начата: Andrey23168 от Март 31, 2016, 17:29



Название: Как собрать и запустить 32битное приложение Qt в 64битном Linux?
Отправлено: Andrey23168 от Март 31, 2016, 17:29
Не могу собрать и запустить 32битное приложение Qt в 64битном Linux. Компилятор GCC x86 32bit определяется сам. Но, при попытке выбрать его загорается красная иконка с восклицательным знаком: “Компилятор “GCC(x86 32bit в usr/bin)” (x86-linux-generic-elf-32bit) Не может создавать код для профиля Qt”Qt5.3.0 в PATH(qt5)” (x86-linux-generic-elf-64bit).”.
Собственно, почему? И как сделать чтобы мог?
Далее, если проигнорировать предупреждение, Creator выдаст ошибки:
/usr/bin/ld: skipping incompatible /usr/lib/x86_64-linux-gnu/libQt5Widgets.so when searching for -lQt5Widgets
/usr/bin/ld: cannot find -lQt5Widgets
/usr/bin/ld: skipping incompatible /usr/lib/x86_64-linux-gnu/libQt5Gui.so when searching for -lQt5Gui
/usr/bin/ld: cannot find -lQt5Gui
/usr/bin/ld: skipping incompatible /usr/lib/x86_64-linux-gnu/libQt5Core.so when searching for -lQt5Core
/usr/bin/ld: cannot find -lQt5Core
/usr/bin/ld: skipping incompatible /usr/lib/x86_64-linux-gnu/libGL.so when searching for -lGL
/usr/bin/ld: cannot find -lGL
/usr/bin/ld: skipping incompatible /usr/lib/x86_64-linux-gnu/libpthread.so when searching for -lpthread
/usr/bin/ld: skipping incompatible /usr/lib/x86_64-linux-gnu/libpthread.a when searching for -lpthread
collect2: error: ld returned 1 exit status
Эти библиотеки 64 битные и они ни на месте. С 64 битным компилятором все работает. В руководстве по кросс-компиляции, что я нашел, было написано что: “Так же можно заметить, что системный x64 GCC в linux умеет генерировать и 32-битные приложения. Однако это не отменяет того, что также необходимы 32-битные версии библиотек.”.
То есть, мне нужны библиотеки: libQt5Widgets.so; libQt5Gui.so; libQt5Core.so; libGL.so; libpthread.so; libpthread.a; в 32битах? Или имеются в виду какие-то другие? Просто, странно что такие махинации были обойдены в том руководстве. Такое ощущение что, это должно работать по умолчанию. И только у меня, почему-то не хочет.
Помогите!


Название: Re: Как собрать и запустить 32битное приложение Qt в 64битном Linux?
Отправлено: maint от Март 31, 2016, 17:40
а 32 битные библиотеки кто устанавливать будет? Они не ставятся по умолчанию на 64 разрядные системы, за излишеством


Название: Re: Как собрать и запустить 32битное приложение Qt в 64битном Linux?
Отправлено: Andrey23168 от Март 31, 2016, 17:50
To maint
Какие нужны библиотеки? libQt5Widgets.so; libQt5Gui.so; libQt5Core.so; libGL.so; libpthread.so; libpthread.a? В менеджере пакетов ничего нет про второй вариант библиотек Qt 32bit. Единственное что приходит в голову это: поставить на виртуалку 32битный линукс и оттуда стащить. Обычно это так делается? И как потом сказать креатору где лежат библиотеки?
пс. Я в linux плохо разбираюсь.


Название: Re: Как собрать и запустить 32битное приложение Qt в 64битном Linux?
Отправлено: maint от Март 31, 2016, 18:08
что значит нету? Библиотеки есть. Я не знаю какой линух у вас, в федоре, например,  поиск даст выбор пакетов qt5-qtbase.x86-64 и qt5-qtbase.i686. Ставить нужно соотвественно qt5-qtbase.i686 для 32 разрядов на 64 разрядной системе. Для fedora 23 -  dnf install qt5-qtbase.i686. Для дебиан систем (ubuntu в них же),  apt-get install qt5-qtbase.i686 или что то подобное.


Название: Re: Как собрать и запустить 32битное приложение Qt в 64битном Linux?
Отправлено: AlekseyK от Апрель 01, 2016, 07:15
To maint
пс. Я в linux плохо разбираюсь.

Надо научиться лучше разбираться - полезно! :) Какой дистрибутив у Вас? В openSUSE есть например пакеты с префиксом 32bit для таких случаев. Нужно также убедиться, что 32 битный gcc установлен. Зайдите в менеджер пакетов Вашего дистрибутива и посмотрите, что есть. Доустановите необходимое.


Название: Re: Как собрать и запустить 32битное приложение Qt в 64битном Linux?
Отправлено: Andrey23168 от Апрель 01, 2016, 11:04
Astra Linux. Пока я пытался разобраться сам, я решил не мелочиться и поставил все пакеты, которые содержали в названии libqt5. Есть еще libqt4 и даже 3, но я не думаю, что они могут помочь.
Значит в дебиане64 есть все что нужно? Поставлю его и попробую собрать не нем. Сколько он там весит? 5 двд дисков? Окей…
Если получится, надо будет как-то перенести нужные пакеты и или библиотеки на астру. Как такое делается в линуксе?


Название: Re: Как собрать и запустить 32битное приложение Qt в 64битном Linux?
Отправлено: Andrey23168 от Апрель 04, 2016, 17:06
Скачал я в итоге дебиан. Я поставил все библиотеки libqt и 4 и 5, кроме тех что конфликтовали. Все что нашел по gcc и g++ и lib32. Все равно не заработало.
Вот консоль сборки полностью:
15:38:46: Выполняются этапы для проекта HelloTest32...
15:38:46: Настройки не изменились, этап qmake пропускается.
15:38:46: Запускается: «/usr/bin/make»
/usr/lib/x86_64-linux-gnu/qt5/bin/uic ../3helotest5/mainwindow.ui -o ui_mainwindow.h
g++ -c -m32 -pipe -O2 -Wall -W -D_REENTRANT -fPIE -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-32 -I../3helotest5 -isystem /usr/include/x86_64-linux-gnu/qt5 -isystem /usr/include/x86_64-linux-gnu/qt5/QtWidgets -isystem /usr/include/x86_64-linux-gnu/qt5/QtGui -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I. -I. -o main.o ../3helotest5/main.cpp
g++ -c -m32 -pipe -O2 -Wall -W -D_REENTRANT -fPIE -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-32 -I../3helotest5 -isystem /usr/include/x86_64-linux-gnu/qt5 -isystem /usr/include/x86_64-linux-gnu/qt5/QtWidgets -isystem /usr/include/x86_64-linux-gnu/qt5/QtGui -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I. -I. -o mainwindow.o ../3helotest5/mainwindow.cpp
/usr/lib/x86_64-linux-gnu/qt5/bin/moc -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-32 -I/home/jo/Документы/3helotest5 -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I/usr/include/c++/4.9 -I/usr/include/x86_64-linux-gnu/c++/4.9 -I/usr/include/c++/4.9/backward -I/usr/lib/gcc/x86_64-linux-gnu/4.9/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/4.9/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include ../3helotest5/mainwindow.h -o moc_mainwindow.cpp
g++ -c -m32 -pipe -O2 -Wall -W -D_REENTRANT -fPIE -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-32 -I../3helotest5 -isystem /usr/include/x86_64-linux-gnu/qt5 -isystem /usr/include/x86_64-linux-gnu/qt5/QtWidgets -isystem /usr/include/x86_64-linux-gnu/qt5/QtGui -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I. -I. -o moc_mainwindow.o moc_mainwindow.cpp
g++ -m32 -Wl,-O1 -o HelloTest32 main.o mainwindow.o moc_mainwindow.o   -lQt5Widgets -L/usr/X11R6/lib64 -lQt5Gui -lQt5Core -lGL -lpthread
/usr/bin/ld.bfd.real: cannot find -lQt5Widgets
/usr/bin/ld.bfd.real: cannot find -lQt5Gui
/usr/bin/ld.bfd.real: cannot find -lQt5Core
/usr/bin/ld.bfd.real: cannot find -lGL
Makefile:145: recipe for target 'HelloTest32' failed
collect2: error: ld returned 1 exit status
make: *** [HelloTest32] Error 1
15:38:49: Процесс «/usr/bin/make» завершился с кодом 2.
Ошибка при сборке/установке проекта HelloTest32 (комплект: Desktop)
When executing step "Сборка"
15:38:49: Прошло времени: 00:02.

Я мучил федору. Поставил креатор. Вбил в нее dnf install qt5-qtbase.i386. Но при попытке сборки получил ошибку. Нашел решение, вбил dnf install stubs-32.h. Опять ошибка, нашел решение, dnf install qt0devel.i686. И получил те же самые ошибки что и на дебиане. Там не было менеджера пакетов, чтобы поставить все… и, я бросил попытки.
Может, нужны какие-то настройки креатора? Или надо делать в консоли? Еще меня смущает профиль qt, то есть qmake. В статье по кросс-компиляции что мне все время попадается, автор возится с configure и qmake.conf. Однако, не упоминает подобных действия по отношению к компиляции линукс32. Может нужно что-то с этим сделать?
Неужели знания о компиляции программ линукс32 в системе линукс64 были утеряны со времен 2013 года? Неужели теперь, никто не знает что делать?


Название: Re: Как собрать и запустить 32битное приложение Qt в 64битном Linux?
Отправлено: Andrey23168 от Апрель 07, 2016, 17:46
А вот и я! За это время я немного продвинулся в восстановлении занесенных песками времени знаний по сборке и запуске 32битных приложений Qt в 64битном Astra Linux. Я знаю, что когда-то «Древние» могли так делать. Но спустя годы знания были утрачены… Очень интересно самому восстанавливать древние утерянные знания, но если вы можете мне как-то помочь, не стесняйтесь! напишите в этом форуме как это делалось!
Оказывается, в openSUSE это возможно, если поставить нужные библиотеки. Собственно, теперь нужно перенести это богатство в Astra Linux. Я не знаю, как стянуть пакет из одного линукса и поставить в другой. По этому, не долго думая, я скопировал папку /usr/lib из openSUSE в Astra Linux /usr/comp. Это ведь разрешено лицензионными соглашениями?
Ну да ладно. Я отчаялся чего-то добиться от креатора, поэтому:
1.   Очистил проект в креаторе
2.   Собрал снова, и скопировал последнюю строчку из консоли, после которой сыплются ошибки (g++ -m32 -Wl,-O1 -o HelloTest32 main.o mainwindow.o moc_mainwindow.o   -lQt5Widgets -L/usr/X11R6/lib64 -lQt5Gui -lQt5Core -lGL -lpthread)
3.   Стал писать ее в консоли с некоторыми изменениями.
Естественно, после указания недостающих библиотек ничего не заработало. Требуются еще библиотеки, а они есть у меня. Я пришел к такому виду строчки:
g++ -m32 -Wl,-O1 -o HelloTest32 main.o mainwindow.o moc_mainwindow.o   /usr/comp/libQt5Widgets.so.5.5.1 -L/usr/X11R6/lib64 /usr/comp/libQt5Gui.so.5.5.1 /usr/comp/libQt5Core.so.5.5.1 -lGL -lpthread /usr/comp/libgobject-2.0.so.0.4400.1 /usr/comp/libglib-2.0.so.0.4400.1 /usr/comp/libpng16.so.16.8.0 /usr/comp/libharfbuzz.so.0.10000.3 /usr/comp/libicui18n.so.52.1 /usr/comp/libicuuc.so.52.1 /usr/comp/libpcre16.so.0.2.1 /usr/comp/libffi.so.4.0.1 /usr/comp/libpcre.so.1.2.1 /usr/comp/libgraphite2.so.3.0.1 /usr/comp/libicudata.so.52.1
И уткнулся в сложноразрешимую проблему:
usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.7/libstdc++.so when searching for -lstdc++
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.7/libstdc++.a when searching for -lstdc++
/usr/bin/ld: cannot find -lstdc++
Этот libstdc++.so.6.0.17 не получилось также подоткнуть. Единственное что пришло мне в голову это заменить его на аналогичный из openSUSE. После этого приложения перестали запускаться, нельзя было выйти из режима блокировки, система перезагружалась только в режим консоли. Я даже готов был с этим смириться лишь бы собралась моя програмка…
Но не тут-то было:
/usr/lib/gcc/x86_64-linux-gnu/4.7/libstdc++.so: undefined reference to `__cxa_thread_atexit_impl@GLIBC_2.18'
/usr/comp/libglib-2.0.so.0.4400.1: undefined reference to `clock_gettime@GLIBC_2.17'
/usr/comp/libQt5Core.so.5.5.1: undefined reference to `__fdelt_chk@GLIBC_2.15'
Даже не знаю, как с undefined reference в таком виде бороться. Если подоткнуть -lGL –lpthread руками попросит еще библиотек, в итоге:
g++ -m32 -Wl,-O1 -o HelloTest32 main.o mainwindow.o moc_mainwindow.o   /usr/comp/libQt5Widgets.so.5.5.1 -L/usr/X11R6/lib64 /usr/comp/libQt5Gui.so.5.5.1 /usr/comp/libQt5Core.so.5.5.1 /usr/comp/libGL.so.1.2.0 /usr/comp/libpthread-2.19.so /usr/comp/libgobject-2.0.so.0.4400.1 /usr/comp/libglib-2.0.so.0.4400.1 /usr/comp/libpng16.so.16.8.0 /usr/comp/libharfbuzz.so.0.10000.3 /usr/comp/libicui18n.so.52.1 /usr/comp/libicuuc.so.52.1 /usr/comp/libpcre16.so.0.2.1 /usr/comp/libffi.so.4.0.1 /usr/comp/libpcre.so.1.2.1 /usr/comp/libgraphite2.so.3.0.1 /usr/comp/libicudata.so.52.1 /usr/comp/libglapi.so.0.0.0 /usr/comp/libX11-xcb.so.1.0.0 /usr/comp/libxcb-glx.so.0.0.0 /usr/comp/libxcb-dri3.so.0.0.0 /usr/comp/libxcb-dri2.so.0.0.0 /usr/comp/libxcb-present.so.0.0.0 /usr/comp/libxcb-sync.so.1.0.0 /usr/comp/libxshmfence.so.1.0.0
После вот этого я все равно прихожу к:
/usr/comp/libpthread-2.19.so: undefined reference to `__mktemp@@GLIBC_PRIVATE'
/usr/comp/libGL.so.1.2.0: undefined reference to `xcb_poll_for_special_event'
/usr/lib/gcc/x86_64-linux-gnu/4.7/libstdc++.so: undefined reference to `__cxa_thread_atexit_impl@GLIBC_2.18'
/usr/comp/libpthread-2.19.so: undefined reference to `__madvise@@GLIBC_PRIVATE'
/usr/comp/libglib-2.0.so.0.4400.1: undefined reference to `clock_gettime@GLIBC_2.17'
/usr/comp/libxcb-dri3.so.0.0.0: undefined reference to `xcb_get_reply_fds'
/usr/comp/libxcb-dri3.so.0.0.0: undefined reference to `xcb_send_fd'
/usr/comp/libpthread-2.19.so: undefined reference to `__ctype_init@@GLIBC_PRIVATE'
/usr/comp/libQt5Core.so.5.5.1: undefined reference to `__fdelt_chk@GLIBC_2.15'
/usr/comp/libGL.so.1.2.0: undefined reference to `xcb_wait_for_special_event'
/usr/comp/libGL.so.1.2.0: undefined reference to `_XGetRequest'
/usr/comp/libGL.so.1.2.0: undefined reference to `xcb_unregister_for_special_event'
/usr/comp/libpthread-2.19.so: undefined reference to `__call_tls_dtors@@GLIBC_PRIVATE'
/usr/comp/libGL.so.1.2.0: undefined reference to `xcb_register_for_special_xge'
Мне начинает казаться что это тупиковый вариант…


Название: Re: Как собрать и запустить 32битное приложение Qt в 64битном Linux?
Отправлено: Alex Custov от Апрель 07, 2016, 18:21
А зачем вообще нужен такой гемор? Почему нужно именно 32-битное? Если Astra Linux не поддерживает multiarch, то гемороя будет столько, что мало не покажется.


Название: Re: Как собрать и запустить 32битное приложение Qt в 64битном Linux?
Отправлено: Andrey23168 от Апрель 08, 2016, 12:09
To Alex Custov
Если бы нужно было мне лично, я бы давно это дело бросил. Но мне по работе… Причина есть, но, документы о неразглашении я не читал, но подписывал. Я не уверен, что могу это рассказывать. Начальство уверено, что именно так все и должно быть сделано.
Я уже жаловался начальству, что это НЕВОЗМОЖНОООО!!!! На что мне было предложено пересобрать Qt в 32битном режиме, но это сложно. Это может помочь?
В Astra Linux есть пакеты:
Binutils-multiarch v2.22-8 Binary utilities that support multi-arch targets
Gdb-multiarch v 7.4.1+dfsg-0.1 The GNU Debugger (with support for multiple architectures)
Multiarch-support 2.13-38+deb7u1as Transnational pacage ensure multiarch compatibility
Но, их установка ничего не дает.
Я добавил путь к libc-2.19.so к своей мути:
g++ -m32 -Wl,-O1 -o HelloTest32 main.o mainwindow.o moc_mainwindow.o   /usr/comp/libQt5Widgets.so.5.5.1 -L/usr/X11R6/lib64 /usr/comp/libQt5Gui.so.5.5.1 /usr/comp/libQt5Core.so.5.5.1 -lGL -lpthread /usr/comp/libgobject-2.0.so.0.4400.1 /usr/comp/libglib-2.0.so.0.4400.1 /usr/comp/libpng16.so.16.8.0 /usr/comp/libharfbuzz.so.0.10000.3 /usr/comp/libicui18n.so.52.1 /usr/comp/libicuuc.so.52.1 /usr/comp/libpcre16.so.0.2.1 /usr/comp/libffi.so.4.0.1 /usr/comp/libpcre.so.1.2.1 /usr/comp/libgraphite2.so.3.0.1 /usr/comp/libicudata.so.52.1 /usr/comp/libc-2.19.so -L/lib32
И получил ошибку:
/usr/comp/libc-2.19.so: undefined reference to `_dl_find_dso_for_object@GLIBC_PRIVATE'
Интересно, это решились прошлые ошибки и добавилась одна новая? Или это новая ошибка затмившая прошлые?
Я двигаюсь в правильном направлении? И если нет, как лучше решить мою задачу?


Название: Re: Как собрать и запустить 32битное приложение Qt в 64битном Linux?
Отправлено: AlekseyK от Апрель 11, 2016, 20:26
Ставь openSUSE, там таких проблем нет - поставил и работает! Там ещё есть Build Service - потом сможешь собирать под любую битность и любой дистрибутив.

А переносить библиотеки - это не вариант: пути могуть быть другие, другая версия Qt, gcc и т.п., про ldd не забудь, так что вероятность, что это всё будет работать  - минимальная.


Название: Re: Как собрать и запустить 32битное приложение Qt в 64битном Linux?
Отправлено: ssoft от Апрель 11, 2016, 20:47
Имел опыт сборки 32 бит на Oracle Linux 64 bit.
Устанавливал все пакеты от которых зависит Qt (...qt4-dev-....rpm)
Собирал Qt-4.7.4 из исходников.
Все собралось, даже запустилось, но.. шрифты не стали работать, английский выглядел убого, а русский вообще не отображался.
Итог, рефакторинг проекта для поддержки 64 бит. Дальше не стал заморачиваться.


Название: Re: Как собрать и запустить 32битное приложение Qt в 64битном Linux?
Отправлено: Andrey23168 от Апрель 12, 2016, 17:04
To AlekseyK
Все должно функцианировать в 64bit Astra Linux, я не могу использовать другие ОС. Даже программы и компоненты не желательно чужие брать. Но, по другому никак.

To ssoft
Я уже все перепробовал. И думаю собирать qt. Надеюсь мне повезет. Не могли бы вы дать мне какой-нибудь совет или наставление? Какой инструкцией вы пользовались или где взяли знания для этих действий?


Название: Re: Как собрать и запустить 32битное приложение Qt в 64битном Linux?
Отправлено: AlekseyK от Апрель 13, 2016, 00:40
To AlekseyK
Все должно функцианировать в 64bit Astra Linux, я не могу использовать другие ОС. Даже программы и компоненты не желательно чужие брать. Но, по другому никак.
А понятно - это наша супер защищённая разработка, тогда конечно. Непонятно только зачем 32 битной программе нужно крутиться на 64 битном линуксе. Астра сделана на Qt, странно, что там нет 32 битных её версий. Или Вы не нашли? Посмотрите список пакетов, есть графическая утилита там для этого. Основана на пакетах .deb, значит можно доставлять с дебиана или убунту. Разберитесь с пакетами, гораздо проще и эффективнее, чем в винде всё устроено. Вот посмотрите как подключаются репозитории из дебиана, если в оригинале каких-то пакетов нет: http://astralinux.blogspot.com/2015/11/debian-astra-linux-ce-1105-orel-linux.html, http://www.sakryukin.ru/?module=articles&c=articles&b=8&a=45

P.S. Посмотрел какие пакеты есть в астре, бедноватый конечно репозиторий, как говорят, по причине безопасности. Но всегда можно подключить дебиановские репозитории с пакетами i686: http://www.sakryukin.ru/?module=articles&c=articles&b=8&a=45


Название: Re: Как собрать и запустить 32битное приложение Qt в 64битном Linux?
Отправлено: ssoft от Апрель 13, 2016, 09:12
To ssoft
Я уже все перепробовал. И думаю собирать qt. Надеюсь мне повезет. Не могли бы вы дать мне какой-нибудь совет или наставление? Какой инструкцией вы пользовались или где взяли знания для этих действий?

Все решалось методом проб и ошибок).
Берем, например, пакет qt-everywhere-opensource-src-4.7.4.tar.gz.

Если в репозитории ОС есть пакет qt...-dev-... для любой версии qt4, то его лучше поставить, так как большинство (если не все) зависимостей он в себе содержит. Вообще перечень зависимостей для Qt4 перечислен здесь http://doc.qt.io/qt-4.8/requirements-x11.html (http://doc.qt.io/qt-4.8/requirements-x11.html).

Запускаем configure с нужными параметрами - Linux32, OpenGL, no-examples и т.п. (возможные параметры смотрим через configure --help).
По сообщениям об ошибках, анализируем чего не хватает и чем можно пожертвовать. Ушел почти день.


Название: Re: Как собрать и запустить 32битное приложение Qt в 64битном Linux?
Отправлено: mail1 от Апрель 13, 2016, 14:53
Следующее должно работать для Debian-based дистрибутивов, как собственно Debian, Ubuntu или AstraLinux:

Проверьте, поддерживает ли ваш дистрибутив multiarch:

Код
Bash
apt-cache search multiarch
apt-get install multiarch-support
apt-get install libc6:i386
 

Обратите внимание на суффикс ":i386". Такой суффикс надо добавлять к имени пакета, чтобы указать его архитектуру, если она не дефолтная.

Поищите нужные вам пакеты:

Код
Bash
apt-cache search qt5 | grep dev
 

Установите 32-битные версии нужных пакетов:

Код
Bash
apt-get install qt5-default:i386
apt-get install something-else:i386
 

Часто, но не всегда, вам нужно будет устанавливать пакеты с именем, кончающимся на "-dev". В этих пакетах содержатся хедеры и статические библиотеки.


Название: Re: Как собрать и запустить 32битное приложение Qt в 64битном Linux?
Отправлено: AlekseyK от Апрель 13, 2016, 20:11
По моему нужно искать пакеты с суффиксом i686


Название: Re: Как собрать и запустить 32битное приложение Qt в 64битном Linux?
Отправлено: mail1 от Апрель 14, 2016, 11:50
Я тут посмотрел, так в этом АстраЛинуксе вообще 32-битных пакетов нет, только 64-битные. Поэтому, прежде чем пользоваться моей инструкцией, надо подключить репозиторий Debian, который содержит 32-битные пакеты. Ссылку, как это сделать, уже приводили: http://www.sakryukin.ru/?module=articles&c=articles&b=8&a=45 .


Название: Re: Как собрать и запустить 32битное приложение Qt в 64битном Linux?
Отправлено: mail1 от Апрель 14, 2016, 12:07
И, опять таки, непонятно, как ваше начальство предполагает использовать 32-битную версию вашей программы на АстраЛинукс, если он 64-bit-only. Предположим, поставите вы на вашу девелоперскую машину нужные 32-битные пакеты из Дебиана, соберёте свою прогу. И заработает она на вашей машине. А на "обычной" машине с АстраЛинуксом так и не заработает, потому что там 32-битных библиотек то и не будет! Значит, придётся и туда все нужные библиотеки предварительно ставить. А это ведь не только несколько Qt-библиотек. Я смотрю, у вас там и LibPNG, и PCRE, и ещё несколько, да ещё и базовыe библиотеки понадобятся, типа libc, libm, libdl. Или все нужные библиотеки предполагается не устанавливать в систему обычным образом, а таскать вместе с самой прогой? Или статически вкомпилить? Так Glibc статическую линковку по факту не поддерживает. В общем, странное у вас начальство. С одной стороны, не знает чего хочет, а с другой стороны, достаточно компетентно, чтобы давать советы типа "переcобери Qt".


Название: Re: Как собрать и запустить 32битное приложение Qt в 64битном Linux?
Отправлено: Andrey23168 от Апрель 15, 2016, 15:49
Я был сосредоточен в сборке qt. И нужная мне версия qt-everywhere-opensource-src-5.3.0.tar.gz. Собираться категорически отказывается, и после стены текста пишет:
Could not find qmake configuration file linux-g++-32.
Error processing project file: /home/jo/Документы/qt-everywhere-opensource-src-5.3.0/qt.pro
Qt is now configured for building. Just run 'make'.
Once everything is built, you must run 'make install'.
Qt will be installed into /usr/local/Qt-5.3.0
Prior to reconfiguration, make sure you remove any leftovers from
the previous build.
root@astracompclean:/home/jo/Документы/qt-everywhere-opensource-src-5.3.0# make
make: *** Не заданы цели и не найден make-файл.  Останов.
Что-то не так...

И, опять таки, непонятно, как ваше начальство предполагает использовать 32-битную версию вашей программы на АстраЛинукс, если он 64-bit-only. Предположим, поставите вы на вашу девелоперскую машину нужные 32-битные пакеты из Дебиана, соберёте свою прогу. И заработает она на вашей машине. А на "обычной" машине с АстраЛинуксом так и не заработает, потому что там 32-битных библиотек то и не будет! Значит, придётся и туда все нужные библиотеки предварительно ставить. А это ведь не только несколько Qt-библиотек. Я смотрю, у вас там и LibPNG, и PCRE, и ещё несколько, да ещё и базовыe библиотеки понадобятся, типа libc, libm, libdl. Или все нужные библиотеки предполагается не устанавливать в систему обычным образом, а таскать вместе с самой прогой? Или статически вкомпилить? Так Glibc статическую линковку по факту не поддерживает. В общем, странное у вас начальство. С одной стороны, не знает чего хочет, а с другой стороны, достаточно компетентно, чтобы давать советы типа "переcобери Qt".

Как обычно: работать должно! а как я это сделаю: моя проблема.

Я попытался добавить репозиторий дебиана по инструкции(почему-то Multimedia Wheezy не заработал, не отдает ключ). Полез в менеджер пакетов. Он предлагал обновить обновить библиотеки qt с версии 5.3.0 до 5.5.1 и ничего не знал о пакетах с i386.
В терминале я писал что вы рекомендовали. Но так и не обнаружил qt и 32 или i386(i686) в одном названии пакета. Толи лыжи не едут, толи я дурак.
Попытавшись понаставить разных новых интересных пакетов, я наткнулся на ошибки в менеджере при попытке их поставить. И теперь у меня несколько пакетов с ошибками.
Надеюсь в понедельник мой разум прояснится и я смогу что-то сделать.


Название: Re: Как собрать и запустить 32битное приложение Qt в 64битном Linux?
Отправлено: Alex Custov от Апрель 15, 2016, 18:01
Как обычно: работать должно! а как я это сделаю: моя проблема.

Если есть исходный код, то не должно быть проблемы его собрать на 64-бит. Я думал сперва, что нужно использовать какие-то 32-битные блобы, но раз исходники есть, то почему же нужно именно 32-бит?

Я сомневаюсь, что ты сможешь добавить i386 пакеты из Debian. Просто гадаю - попробуй добавить репозитории Debian в sources.list (не забывая про праильные названия дистрибутива, соответствующего твоей версии Astra - это wheezy, jessy?), и потом сделать

Код:
sudo dpkg --add-architecture i386
sudo apt-get update


Название: Re: Как собрать и запустить 32битное приложение Qt в 64битном Linux?
Отправлено: mail1 от Апрель 15, 2016, 18:07
Как обычно: работать должно! а как я это сделаю: моя проблема.

Такой подход предполагает невысокий уровень знаний технической части (в данном случае линукса). А невысокий уровень знаний предполагает невозможность совета "пересобери Qt".

Я попытался добавить репозиторий дебиана по инструкции(почему-то Multimedia Wheezy не заработал, не отдает ключ).

Да, получение ключа в той статье описано довольно экстравагантно. Качать deb-пакет вручную, да ещё с другого сервера (ru против дефолтного). Сейчас версии тех deb-пакетов обновились, урлы стали невалидными.

Лучше установите ключи вот так:

Код
Bash
apt-get update
apt-get install debian-archive-keyring
apt-get install deb-multimedia-keyring
 

При установке apt-get будет ругаться, что подписи не могут быть проверены. Это нормально, ведь мы как раз и устанавливаем ключи. После установки ключей ругани больше быть не должно.

Кстати, репозиторий deb-multimedia вам, скорее всего не нужен.

Полез в менеджер пакетов.
Он предлагал обновить обновить библиотеки qt с версии 5.3.0 до 5.5.1 и ничего не знал о пакетах с i386.

Пишите конкретнее. "Менеджер пакетов" может означать множество различных програм: dpkg, apt-get, synaptic, muon, Ubuntu Store, etc. Соответственно, я ничего не понял.

В терминале я писал что вы рекомендовали.

Пишите конкретнее. Я вам привёл конкретные команды. И не одну. Соответственно, вам надо было написать конкретные ошибки, если какая-то команда не сработала. А перед этим - почитать документацию по команде, с надеждой догадаться, что же пошло не так.

Вообще, не стесняйтесь читать документацию. Я знаю, в винде это не принято. А в линуксе - очень даже. В Винде эффективен метод проб и ошибок - потыкать там, сям, авось заработает. В линуксе эффективнее именно чтение документации. Понятно, сложно перестроиться. Но надо. Другой монастырь, другой уставъ. Не перестроитесь - будете много времени зря терять.

Можете начать отсюда: http://maddog.sitengine.ru/smart-question-ru.html

Но так и не обнаружил qt и 32 или i386(i686) в одном названии пакета. Толи лыжи не едут, толи я дурак.

А вот вполне конкретно написано. И можно конкретно ответить:

"i386" и не должно быть в названии пакета. "i386" - это название архитектуры. Например, у меня есть 2 пакета с одним названием, но разными архитектурами:

Код
Bash
$ dpkg -l libc6
...
ii  libc6:amd64                           2.21-0ubuntu4.1         amd64                   GNU C Library: Shared libraries
ii  libc6:i386                            2.21-0ubuntu4.1         i386                    GNU C Library: Shared libraries
 

Попытавшись понаставить разных новых интересных пакетов, я наткнулся на ошибки в менеджере при попытке их поставить. И теперь у меня несколько пакетов с ошибками.

К сожалению, опять неконкретно. Что было сделано? В чём проявились ошибки? Нифига непонятно.

Общий совет: читать документацию по командам:

Код
Bash
dpkg --remove ...
apt-get remove ...
apt-get install -f
 


Название: Re: Как собрать и запустить 32битное приложение Qt в 64битном Linux?
Отправлено: AlekseyK от Апрель 15, 2016, 19:41
А это пробовал: Qt Online Installer for Linux 32-bit (22.9 MB) (http://download.qt.io/official_releases/online_installers/qt-unified-linux-x86-online.run)?

Ещё информация:
http://stackoverflow.com/questions/34513838/qt5-32-bit-runtime-libraries-not-present-on-64-bit-multiarch-linux-mint
http://askubuntu.com/questions/279421/how-can-i-install-qt-5-x-on-12-04-lts


Название: Re: Как собрать и запустить 32битное приложение Qt в 64битном Linux?
Отправлено: Andrey23168 от Апрель 20, 2016, 16:16
Прошу простить меня за некачественное сообщение, я 3 дня сидел в терминале ковырял verbose. И уже плохо соображал. Сейчас постараюсь подробно все написать.
В общем, я достиг некоторых успехов. После множественных попыток настроить, понаставить репозиториев и все что только можно установить из менеджера пакетов synaptic. Мне удалось сконфигурировать, собрать и установить qt 5.3.0. И только я обрадовался, как меня подстерегла проблема где я не ожидал. Программы не запускаются даже на этой машине!!!
Qt Creator собирает программу, но жалуется:
Запускается /home/jo/Документы/build-hellotest32-Desktop-Release/hellotest32...
This application failed to start because it could not find or load the Qt platform plugin "xcb".

Available platform plugins are: linuxfb, minimal, offscreen.

Reinstalling the application may fix this problem.
Программа неожиданно завершилась.
/home/jo/Документы/build-hellotest32-Desktop-Release/hellotest32 завершился крахом

Однако. В менеджере пакетов есть как раз такой пакет: xcb. В описании которого написано что: «Pigeon holes for your cut and paste selections.»... Причем здесь голуби?  И дыры? Энциклопедический словарь по металлургии говорит что: [pigeon hole (flaw)] дефект проката в виде выходящей на поверхность полости, образованной в результате раскрытия внутренних трещин при деформировании …
Будучи немного обескураженным я отметил его для установки. Установился, но написал кучу ошибок(как обычно). Я отметил его для переустановки и записал их:
[spoiler]xcb отметить для переустановки. Применить:
fly-admin-autostart (версия 0.1.1) будет обновлён до версии 0.1.4
fly-fm-libs (версия 1.2.6) будет обновлён до версии 1.3.6
fly-term (версия 1.2.5) будет обновлён до версии 1.2.8
flyqt5platformtheme (версия 1.0.9) будет обновлён до версии 1.2.0-1
libc-bin (версия 2.13-38+deb7u1astra1) будет обновлён до версии 2.15-0ubuntu10.13astra1
libc-dev-bin (версия 2.13-38+deb7u1astra1) будет обновлён до версии 2.15-0ubuntu10.13astra1
libc6 (версия 2.13-38+deb7u1astra1) будет обновлён до версии 2.15-0ubuntu10.13astra1
libc6-dbg (версия 2.13-38+deb7u1astra1) будет обновлён до версии 2.15-0ubuntu10.13astra1
libc6-dev (версия 2.13-38+deb7u1astra1) будет обновлён до версии 2.15-0ubuntu10.13astra1
libc6-dev-i386 (версия 2.13-38+deb7u1astra1) будет обновлён до версии 2.15-0ubuntu10.13astra1
libc6-i386 (версия 2.13-38+deb7u1astra1) будет обновлён до версии 2.15-0ubuntu10.13astra1
libc6-pic (версия 2.13-38+deb7u1astra1) будет обновлён до версии 2.15-0ubuntu10.13astra1
libc6-prof (версия 2.13-38+deb7u1astra1) будет обновлён до версии 2.15-0ubuntu10.13astra1
libqgsttools-p1 (версия 5.3.0-1astra1) будет обновлён до версии 5.5.1-2astra3
libqt5multimedia5 (версия 5.3.0-1astra1) будет обновлён до версии 5.5.1-2astra3
libqt5multimedia5-plugins (версия 5.3.0-1astra1) будет обновлён до версии 5.5.1-2astra3
libqt5webkit5 (версия 5.3.0+dfsg-2astra2) будет обновлён до версии 5.5.1+dfsg-2astra1
libqt5webkit5-dev (версия 5.3.0+dfsg-2astra2) будет обновлён до версии 5.5.1+dfsg-2astra1
qt5-style-plugins (версия 5.0.0~git7bd6205-0astra4) будет обновлён до версии 5.0.0~git7bd6205-0astra6
qtcreator (версия 3.1.1+dfsg-1) будет обновлён до версии 3.6.0+dfsg-0astra1
qtcreator-data (версия 3.1.1+dfsg-1) будет обновлён до версии 3.6.0+dfsg-0astra1
libkf5itemviews-data (версия 5.16.0-1) будет установлен
xcb (версия 2.4-4.3) будет переустановлен

Некоторые из пакетов не могут быть получены с сервера(ов).
Продолжить, пропустив эти пакеты? Да:
E: /var/cache/apt/archives/libkf5itemviews-data_5.16.0-1_all.deb: попытка перезаписать «/usr/share/locale/bn_IN/LC_MESSAGES/kitemviews5_qt.qm», который уже имеется в пакете libkf5itemviews5-data:amd64 4.99.0-0astra1

W: Не удалось получить ftp://mirror.yandex.ru/astra/current/orel/repository/pool/main/e/eglibc/libc-dev-bin_2.15-0ubuntu10.13astra1_amd64.deb
  Не удалось найти IP-адрес для «mirror.yandex.ru»

--//-- (Много одинаковых ошибок)

W: Не удалось получить ftp://mirror.yandex.ru/astra/current/orel/repository/pool/main/q/qtcreator/qtcreator_3.6.0+dfsg-0astra1_amd64.deb
  Не удалось найти IP-адрес для «mirror.yandex.ru»


Подробности:
debconf: не удалось инициализировать интерфейс: Gnome
debconf: (Can't locate Gtk2.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl .) at /usr/share/perl5/Debconf/FrontEnd/Gnome.pm line 91, <> line 2.)
debconf: будет использован интерфейс: Dialog
(Чтение базы данных … на данный момент установлено 174979 файлов и каталогов.)
Подготовка к замене пакета xcb 2.4-4.3 (используется файл …/archives/xcb_2.4-4.3_amd64.deb) …
Распаковывается замена для пакета xcb …
Распаковывается пакет libkf5itemviews-data (из файла …/libkf5itemviews-data_5.16.0-1_all.deb) …
dpkg: ошибка при обработке параметра /var/cache/apt/archives/libkf5itemviews-data_5.16.0-1_all.deb (--unpack):
 попытка перезаписать «/usr/share/locale/bn_IN/LC_MESSAGES/kitemviews5_qt.qm», который уже имеется в пакете libkf5itemviews5-data:amd64 4.99.0-0astra1
Обрабатываются триггеры для menu …
Обрабатываются триггеры для man-db …
debconf: не удалось инициализировать интерфейс: Gnome
debconf: (Can't locate Gtk2.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl .) at /usr/share/perl5/Debconf/FrontEnd/Gnome.pm line 91.)
debconf: будет использован интерфейс: Dialog
При обработке следующих пакетов произошли ошибки:
 /var/cache/apt/archives/libkf5itemviews-data_5.16.0-1_all.deb
W: Не удалось получить ftp://mirror.yandex.ru/astra/current/orel/repository/pool/main/e/eglibc/libc-dev-bin_2.15-0ubuntu10.13astra1_amd64.deb
  Не удалось найти IP-адрес для «mirror.yandex.ru»

--//--

W: Не удалось получить ftp://mirror.yandex.ru/astra/current/orel/repository/pool/main/q/qtcreator/qtcreator_3.6.0+dfsg-0astra1_amd64.deb
  Не удалось найти IP-адрес для «mirror.yandex.ru»


E: Sub-process /usr/bin/dpkg returned an error code (1)
Ошибка при установке пакета. Попытка восстановления:
dpkg: зависимости пакетов не позволяют настроить пакет qml-module-qtquick-layouts:amd64:
 qml-module-qtquick-layouts:amd64 зависит от libc6 (>= 2.14), однако:
  Версия libc6:amd64 в системе 2.13-38+deb7u1astra1.

dpkg: ошибка при обработке параметра qml-module-qtquick-layouts:amd64 (--configure):
 проблемы зависимостей — оставляем не настроенным
dpkg: зависимости пакетов не позволяют настроить пакет qttools5-dev-tools:
 qttools5-dev-tools зависит от libc6 (>= 2.14), однако:
  Версия libc6:amd64 в системе 2.13-38+deb7u1astra1.

--//--

dpkg: ошибка при обработке параметра qml-module-qtquick-window2:amd64 (--configure):
 проблемы зависимостей — оставляем не настроенным
dpkg: слишком много ошибок — останавливаемся
Обрабатываются триггеры для menu …
При обработке следующих пакетов произошли ошибки:
 qml-module-qtquick-layouts:amd64
 qttools5-dev-tools
 libqt5opengl5:amd64
 libqt5quickwidgets5:amd64
 libqt5designer5:amd64
 libqt5opengl5-dev:amd64
 libqt5test5:amd64
 libqt5quick5:amd64
 libqt5declarative5:amd64
 libqt5xml5:amd64
 qtbase5-dev-tools
 libqt5positioning5-plugins:amd64
 libqt5concurrent5:amd64
 libqt5sql5-sqlite:amd64
 libqt5gui5:amd64
 qmlscene
 qtdeclarative5-dev-tools
 libqt5xcbqpa5:amd64
 libqt5sql5-odbc:amd64
 libqt5widgets5:amd64
 libicu52:amd64
 libqt5quickparticles5:amd64
 libqt5qml5:amd64
 libqt5positioning5:amd64
 qml-module-qtquick2:amd64
 libqt5sql5:amd64
 qt5-qmake:amd64
 libqt5sql5-mysql:amd64
 qtbase5-dev:amd64
 libkf5itemviews5:amd64
 libqt5sensors5-dev:amd64
 qtdeclarative5-dev:amd64
 libqt5dbus5:amd64
 libevdev2
 libqt5sensors5:amd64
 libqbscore1
 libqt5svg5:amd64
 libqt5quicktest5:amd64
 libqt5printsupport5:amd64
 libqt5script5:amd64
 qdbus-qt5
 qml-module-qtquick-controls:amd64
 libqt5scripttools5:amd64
 libqt5core5a:amd64
 juffed
 qtquick1-5-dev-tools
 libqt5egldeviceintegration5:amd64
 libqt5network5:amd64
 libqt5sql5-tds:amd64
 libqt5xmlpatterns5:amd64
 qml-module-qtquick-window2:amd64
Обработка остановлена из-за слишком большого количества ошибок.

Некоторые из пакетов не могут быть получены с сервера(ов).
Продолжить, пропустив эти пакеты? Да:
E: Internal Error, No file name for xcb:amd64

W: Не удалось получить ftp://mirror.yandex.ru/astra/current/orel/repository/pool/non-free/f/fly-admin-autostart/fly-admin-autostart_0.1.4_amd64.deb
  Не удалось найти IP-адрес для «mirror.yandex.ru»

--//--

W: Не удалось получить ftp://mirror.yandex.ru/astra/current/orel/repository/pool/main/e/eglibc/libc6_2.15-0ubuntu10.13astra1_amd64.deb
  Не удалось найти IP-адрес для «mirror.yandex.ru»[/spoiler]

После этого система начала вести себя странно. Перестала вызывать аналог пуска и запускать программы. Еле ошибки спас.
Я решил проверить зависимости программы которую собрал, но не запустил Qt Creator. Результат поверг меня в шок:
jo@astra:~$ sudo ldd /home/jo//Документы/build-hellotest32-Desktop-Release/hellotest32
        linux-gate.so.1 =>  (0xf7748000)
        libQt5Widgets.so.5 => not found
        libQt5Gui.so.5 => not found
        libQt5Core.so.5 => not found
        libGL.so.1 => /usr/lib32/libGL.so.1 (0xf76bf000)
        libpthread.so.0 => /lib32/libpthread.so.0 (0xf76a4000)
        libstdc++.so.6 => /usr/lib32/libstdc++.so.6 (0xf75b7000)
        libm.so.6 => /lib32/libm.so.6 (0xf758c000)
        libgcc_s.so.1 => /usr/lib32/libgcc_s.so.1 (0xf756f000)
        libc.so.6 => /lib32/libc.so.6 (0xf73ec000)
        libX11.so.6 => /usr/lib32/libX11.so.6 (0xf72cf000)
        libXext.so.6 => /usr/lib32/libXext.so.6 (0xf72c0000)
        libXxf86vm.so.1 => /usr/lib32/libXxf86vm.so.1 (0xf72ba000)
        libXdamage.so.1 => /usr/lib32/libXdamage.so.1 (0xf72b7000)
        libXfixes.so.3 => /usr/lib32/libXfixes.so.3 (0xf72b2000)
        libdrm.so.2 => /usr/lib32/libdrm.so.2 (0xf72a8000)
        libdl.so.2 => /lib32/libdl.so.2 (0xf72a3000)
        /lib/ld-linux.so.2 (0xf774b000)
        libxcb.so.1 => /usr/lib32/libxcb.so.1 (0xf7289000)
        librt.so.1 => /lib32/librt.so.1 (0xf7280000)
        libXau.so.6 => /usr/lib32/libXau.so.6 (0xf727d000)
        libXdmcp.so.6 => /usr/lib32/libXdmcp.so.6 (0xf7278000)
Как это нету?? Ну вот же:
jo@astra:~$ sudo file /usr/local/Qt-5.3.0/lib/libQt5Widgets.so.5
/usr/local/Qt-5.3.0/lib/libQt5Widgets.so.5: symbolic link to `libQt5Widgets.so.5.3.0'
jo@astra:~$ sudo file /usr/local/Qt-5.3.0/lib/libQt5Widgets.so.5.3.0
/usr/local/Qt-5.3.0/lib/libQt5Widgets.so.5.3.0: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, BuildID[sha1]=0x9f4021690223c068e11a51faac3887cfb52326bc, stripped

Ну как так?
Теперь, система запускается только в режиме командной строки. Видимо виноват этот пакет xcb. Creator завел меня в ловушку! Какой он коварный!
Подскажите пожалуйста:
1) В этой ошибке xcb, виновата нехватка этого плагина? То есть Qt нормально собрался и мог бы работать если бы у меня была этот плагин? Или собралось не так?
2) Почему библиотеки: libQt5Widgets.so.5, libQt5Gui.so.5, libQt5Core.so.5 => not found? И как сделать их found?


Название: Re: Как собрать и запустить 32битное приложение Qt в 64битном Linux?
Отправлено: Andrey23168 от Апрель 20, 2016, 16:20
Эта часть текста у меня не отображается в одном сообщении. Извиняюсь если только у меня.
После этого система начала вести себя странно. Перестала вызывать аналог пуска и запускать программы. Еле ошибки спас.
Я решил проверить зависимости программы которую собрал, но не запустил Qt Creator. Результат поверг меня в шок:
jo@astra:~$ sudo ldd /home/jo//Документы/build-hellotest32-Desktop-Release/hellotest32
        linux-gate.so.1 =>  (0xf7748000)
        libQt5Widgets.so.5 => not found
        libQt5Gui.so.5 => not found
        libQt5Core.so.5 => not found
        libGL.so.1 => /usr/lib32/libGL.so.1 (0xf76bf000)
        libpthread.so.0 => /lib32/libpthread.so.0 (0xf76a4000)
        libstdc++.so.6 => /usr/lib32/libstdc++.so.6 (0xf75b7000)
        libm.so.6 => /lib32/libm.so.6 (0xf758c000)
        libgcc_s.so.1 => /usr/lib32/libgcc_s.so.1 (0xf756f000)
        libc.so.6 => /lib32/libc.so.6 (0xf73ec000)
        libX11.so.6 => /usr/lib32/libX11.so.6 (0xf72cf000)
        libXext.so.6 => /usr/lib32/libXext.so.6 (0xf72c0000)
        libXxf86vm.so.1 => /usr/lib32/libXxf86vm.so.1 (0xf72ba000)
        libXdamage.so.1 => /usr/lib32/libXdamage.so.1 (0xf72b7000)
        libXfixes.so.3 => /usr/lib32/libXfixes.so.3 (0xf72b2000)
        libdrm.so.2 => /usr/lib32/libdrm.so.2 (0xf72a8000)
        libdl.so.2 => /lib32/libdl.so.2 (0xf72a3000)
        /lib/ld-linux.so.2 (0xf774b000)
        libxcb.so.1 => /usr/lib32/libxcb.so.1 (0xf7289000)
        librt.so.1 => /lib32/librt.so.1 (0xf7280000)
        libXau.so.6 => /usr/lib32/libXau.so.6 (0xf727d000)
        libXdmcp.so.6 => /usr/lib32/libXdmcp.so.6 (0xf7278000)
Как это нету?? Ну вот же:
jo@astra:~$ sudo file /usr/local/Qt-5.3.0/lib/libQt5Widgets.so.5
/usr/local/Qt-5.3.0/lib/libQt5Widgets.so.5: symbolic link to `libQt5Widgets.so.5.3.0'
jo@astra:~$ sudo file /usr/local/Qt-5.3.0/lib/libQt5Widgets.so.5.3.0
/usr/local/Qt-5.3.0/lib/libQt5Widgets.so.5.3.0: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, BuildID[sha1]=0x9f4021690223c068e11a51faac3887cfb52326bc, stripped

Ну как так?
Теперь, система запускается только в режиме командной строки. Видимо виноват этот пакет xcb. Creator завел меня в ловушку! Какой он коварный!
Подскажите пожалуйста:
1) В этой ошибке xcb, виновата нехватка этого плагина? То есть Qt нормально собрался и мог бы работать если бы у меня была этот плагин? Или собралось не так?
2) Почему библиотеки: libQt5Widgets.so.5, libQt5Gui.so.5, libQt5Core.so.5 => not found? И как сделать их found?


Название: Re: Как собрать и запустить 32битное приложение Qt в 64битном Linux?
Отправлено: Alex Custov от Апрель 20, 2016, 17:01
Код:
export LD_LIBRARY_PATH=/usr/local/Qt-5.3.0/lib
.../hellotest32

Чтобы такого не было, при конфигурировании Qt можно указать -rpath. Про xcb - это не пакет, а Qt плагин, который должен у тебя лежать в /usr/local/Qt-5.3.0/plugins/platforms (как-то так). Если при запуске программа загрузилась не с твоей версий Qt, то и плагин может быть не найден. Пакет xcb тут ни при чём.


Название: Re: Как собрать и запустить 32битное приложение Qt в 64битном Linux?
Отправлено: mail1 от Апрель 21, 2016, 12:22
Код:
export LD_LIBRARY_PATH=/usr/local/Qt-5.3.0/lib
.../hellotest32

Чтобы не выставлять LD_LIBRARY_PATH каждый раз - можно добавить файлик в каталог /etc/ld.so.conf.d/ и запустить ldconfig. И то, и другое - от рута, естественно.


Название: Re: Как собрать и запустить 32битное приложение Qt в 64битном Linux?
Отправлено: mail1 от Апрель 21, 2016, 13:01
Однако. В менеджере пакетов есть как раз такой пакет: xcb. В описании которого написано что: «Pigeon holes for your cut and paste selections.»... Причем здесь голуби?  И дыры? Энциклопедический словарь по металлургии говорит что: [pigeon hole (flaw)] дефект проката в виде выходящей на поверхность полости, образованной в результате раскрытия внутренних трещин при деформировании …

А надо было всего лишь прочитать описание полностью:
Цитировать
xcb provides easy access to the cut buffers built into every X server.
 It allows the buffers to be manipulated either via the command line,
 or with the mouse in a point and click manner. This version is also
 utf-8 capable.

Цитировать
Некоторые из пакетов не могут быть получены с сервера(ов).
Продолжить, пропустив эти пакеты? Да:

Так делать НЕЛЬЗЯ. Особенно новичку. Поломок в пакетной системе надо ИЗБЕГАТЬ ВСЕМИ СИЛАМИ, а если он всё же случился - ИСПРАВЛЯТЬ НЕМЕДЛЕННО. Прежде, чем решать любые другие проблемы. Пожалуйста, не игнорируйте этот совет.

Ещё раз повторюсь: читайте то, что Линукс вам пишет. Он пишет это для помощи вам же. Здесь нельзя бездумно жать кнопку "Дальше" и игнорировать предупреждения.

Цитировать
E: /var/cache/apt/archives/libkf5itemviews-data_5.16.0-1_all.deb: попытка перезаписать «/usr/share/locale/bn_IN/LC_MESSAGES/kitemviews5_qt.qm», который уже имеется в пакете libkf5itemviews5-data:amd64 4.99.0-0astra1

Очень плохо. Читать документацию по

Код
Bash
apt-get install -f
 

Когда исправите, сделайте полный

Код
Bash
apt-get upgrade
 


Цитировать
W: Не удалось получить ftp://mirror.yandex.ru/astra/current/orel/repository/pool/main/e/eglibc/libc-dev-bin_2.15-0ubuntu10.13astra1_amd64.deb
  Не удалось найти IP-адрес для «mirror.yandex.ru»

--//-- (Много одинаковых ошибок)

Серьёзно? Вы устанавливаете что-то из интернета без интернета? У вас уже куча проблем в системе. Вместо того, чтобы решать их, вы создаёте себе новые. Неправильная стратегия.

Цитировать
dpkg: слишком много ошибок — останавливаемся
...
Обработка остановлена из-за слишком большого количества ошибок.
...

Очень плохо. Фиксите пакетную систему, пока не получилось ещё хуже.

Цитировать
После этого система начала вести себя странно. Перестала вызывать аналог пуска и запускать программы. Еле ошибки спас.

Ожидаемый результат поломки пакетной системы. Фиксите пакетную систему, пока не получилось ещё хуже.

Цитировать
        libQt5Widgets.so.5 => not found
        libQt5Gui.so.5 => not found
        libQt5Core.so.5 => not found

Почему библиотеки: libQt5Widgets.so.5, libQt5Gui.so.5, libQt5Core.so.5 => not found? И как сделать их found?

/etc/ld.so.conf.d/ , как я писал выше. Но сначала пофиксите пакетную систему.

Цитировать
Ну как так?
Теперь, система запускается только в режиме командной строки. Видимо виноват этот пакет xcb. Creator завел меня в ловушку! Какой он коварный!

Очередное следствие поломки пакетной системы. А ведь Линукс сопротивлялся вашим деструктивным дествиям, ворнинги вам выдавал! Но вы их коварно проигнорировали! :)

Пакет xcb (вероятно сокращение для X ClipBoard) - назван по дурацки, да. Путает пользователя с libxcb, который X C Binding/X Client Binding. Но ломать пакетную систему, игнорируя все предупреждения, всё равно не стоило!


Название: Re: Как собрать и запустить 32битное приложение Qt в 64битном Linux?
Отправлено: Andrey23168 от Апрель 29, 2016, 16:36
Наконец! я все же собрал, более-менее рабочий qt. И даже програмки работают. Надеюсь, в итоге не выяснится, что нужная мне часть qt отвалилась…
Всем кто мне помогал, большое спасибо. Если бы не вы я до сих пор ковырял этот кошмар.
Как я это сделал, сам не знаю. Просто в один момент пропала ошибка qt.conf и начались проблемы с xcb. В тот момент я не понял, что я такого делал чтобы ее убрать. Мне кажется, что ./configure делается не заново после неудачи. И если не удался, так и будет писать эту ошибку, пока что-нибудь не поменять. Если будут проблемы с xcb надо достать 32бит библиотеку libxcb.so или как-то так. И при конфигурации добавить –qt-xcb. В ./configure –help написано что там для него нужно.
Я пытался повторить сей подвиг на другой виртуалке (я предусмотрительно собирал на виртуалке, и поэтому не боялся ее ломать). И мне на ней сыплются ошибки:
In file included from widgets/qcupsjobwidget.cpp:43:0:
widgets/qcupsjobwidhet_p.h:84:21: ошибка: <<QCUPSSupport>> не был декларирован
widgets/qcupsjobwidhet_p.h:84:48: ошибка: expected <<,>> or <<…>> before <<jobHold>>
и т.д.
В прошлый раз я такого не встречал. Так что я пока не знаю, что из того что я делал принесло результат, а я пытался проделать все что мне в этой теме советовали и находил в интернете. Когда будет время и если сам разберусь, напишу как это сделать.
Еще раз спасибо.