Russian Qt Forum

Qt => Установка, сборка, отладка, тестирование => Тема начата: _Konstantin_ от Май 09, 2015, 06:52



Название: Установка Qt на Linux для кросс-компиляции: Linux 32/64 Windows 32/64
Отправлено: _Konstantin_ от Май 09, 2015, 06:52
В силу объективных причин пришлось перейти на Linux, но столкнулся с проблемой установки окружения Qt. Нужна установка Qt на Linux Mint для кросс-компиляции проектов для Linux 32/64 Windows 32/64. ОС Linux Mint 17.1 x64. Делаю все как описано http://habrahabr.ru/post/198142/ но на этапе сборки для Windows 64 столкнулся с тем, что ./configure ругается на CROSS_COMPILE=x86_64-w64-mingw32-, пишет:
Цитировать
CROSS_COMPILE=x86_64-w64-mingw32-: unknown argument
пробовал писать и относительный путь CROSS_COMPILE=/usr/x86_64-w64-mingw32- но результат тот же. Помогите разобраться.


Название: Re: Установка Qt на Linux для кросс-компиляции: Linux 32/64 Windows 32/64
Отправлено: Dovgon от Май 09, 2015, 07:37
Если собираешься пользоваться linux поставь openSuse.


Название: Re: Установка Qt на Linux для кросс-компиляции: Linux 32/64 Windows 32/64
Отправлено: _Konstantin_ от Май 09, 2015, 07:53
Я вынужден работать на Linux Mint 17.1
Кстати вопрос, а чем OpenSUSE лучше?


Название: Re: Установка Qt на Linux для кросс-компиляции: Linux 32/64 Windows 32/64
Отправлено: Fregloin от Май 09, 2015, 08:23
у меня ./configure выпадает в сегментацию при попытке собрать 64 qt под винду. решения так и не нашёл.


Название: Re: Установка Qt на Linux для кросс-компиляции: Linux 32/64 Windows 32/64
Отправлено: _Konstantin_ от Май 09, 2015, 08:29
если у человека который писал статью указанную мной все получилось значит я что то делаю не так и переходить на OpenSUSE из-за этого смысла не вижу :)
думаю что данную проблему нужно решать, но я пока не знаю как т.к. в Linux плохо ориентируюсь


Название: Re: Установка Qt на Linux для кросс-компиляции: Linux 32/64 Windows 32/64
Отправлено: _Konstantin_ от Май 09, 2015, 19:12
В общем я так и не поборол эту ошибку, пришлось руками вписать в qmake.conf данную переменную, а в ./configure исключить инициализацию данным занчением x86_64-w64-mingw32- переменную CROSS_COMPILE


Название: Re: Установка Qt на Linux для кросс-компиляции: Linux 32/64 Windows 32/64
Отправлено: __Heaven__ от Май 10, 2015, 00:00
Кстати вопрос, а чем OpenSUSE лучше?
Я бы не стал прислушиваться чьего-то мнения в вопросе выбора дистрибутива. Имхо, каждому своё. Минт - довольно не плохой выбор для знакомства с линукс.
А вы не пробовали заменить x86_64-w64-mingw32- на x86_64-w64-mingw32? Уж какой-то подозрительный этот дефис на конце.


Название: Re: Установка Qt на Linux для кросс-компиляции: Linux 32/64 Windows 32/64
Отправлено: _Konstantin_ от Май 10, 2015, 04:27
С именем переменной все в порядке, это ведь подстановка в файле qmake.conf (во вложении посмотрите), собственно вопрос то и был, почему ему не нравится в качестве аргумента в строке ./configure, а если явно прописать в .conf файле то все в порядке.


Название: Re: Установка Qt на Linux для кросс-компиляции: Linux 32/64 Windows 32/64
Отправлено: _Konstantin_ от Май 10, 2015, 15:36
Собираю все так же Qt-4.8.6 на Linux Mint 17.1 пока для Windows х64, но уже по другому мануалу http://www.linuxfromscratch.org/blfs/view/svn/x/qt4.html
В результате не могу собрать из-за ошибок при конфигурировании. Архив с лог файлом выполнения конфигуратора, qmake.conf из ~/qt-everywhere-opensource-src-4.8.6/mkspecs/win64-x-g++/ прилагаю. Команды конфигурирования видны в лог файле в самом начале.
Судя по выводу в лог ошибок, якобы не хватает библиотек хотя они установлены в системе. К примеру самая первая ошибка:
Цитировать
ipc_sysv auto-detection... ()
compiling ipc.cpp
ipc.cpp:43:21: fatal error: sys/ipc.h: Нет такого файла или каталога
 #include <sys/ipc.h>
этот хедер присутствует в библиотеке libc6-dev и она у меня установлена, вот вывод:
Цитировать
konstantin@kisa ~ $ dpkg -L libc6-dev | grep "/sys/" | sort
/usr/include/x86_64-linux-gnu/sys/acct.h
/usr/include/x86_64-linux-gnu/sys/auxv.h
/usr/include/x86_64-linux-gnu/sys/bitypes.h
/usr/include/x86_64-linux-gnu/sys/cdefs.h
/usr/include/x86_64-linux-gnu/sys/debugreg.h
/usr/include/x86_64-linux-gnu/sys/dir.h
/usr/include/x86_64-linux-gnu/sys/elf.h
/usr/include/x86_64-linux-gnu/sys/epoll.h
/usr/include/x86_64-linux-gnu/sys/errno.h
/usr/include/x86_64-linux-gnu/sys/eventfd.h
/usr/include/x86_64-linux-gnu/sys/fanotify.h
/usr/include/x86_64-linux-gnu/sys/fcntl.h
/usr/include/x86_64-linux-gnu/sys/file.h
/usr/include/x86_64-linux-gnu/sys/fsuid.h
/usr/include/x86_64-linux-gnu/sys/gmon.h
/usr/include/x86_64-linux-gnu/sys/gmon_out.h
/usr/include/x86_64-linux-gnu/sys/inotify.h
/usr/include/x86_64-linux-gnu/sys/ioctl.h
/usr/include/x86_64-linux-gnu/sys/io.h
/usr/include/x86_64-linux-gnu/sys/ipc.h
/usr/include/x86_64-linux-gnu/sys/kdaemon.h
/usr/include/x86_64-linux-gnu/sys/kd.h
/usr/include/x86_64-linux-gnu/sys/klog.h
/usr/include/x86_64-linux-gnu/sys/mman.h
/usr/include/x86_64-linux-gnu/sys/mount.h
/usr/include/x86_64-linux-gnu/sys/msg.h
/usr/include/x86_64-linux-gnu/sys/mtio.h
/usr/include/x86_64-linux-gnu/sys/param.h
/usr/include/x86_64-linux-gnu/sys/pci.h
/usr/include/x86_64-linux-gnu/sys/perm.h
/usr/include/x86_64-linux-gnu/sys/personality.h
/usr/include/x86_64-linux-gnu/sys/poll.h
/usr/include/x86_64-linux-gnu/sys/prctl.h
/usr/include/x86_64-linux-gnu/sys/procfs.h
/usr/include/x86_64-linux-gnu/sys/profil.h
/usr/include/x86_64-linux-gnu/sys/ptrace.h
/usr/include/x86_64-linux-gnu/sys/queue.h
/usr/include/x86_64-linux-gnu/sys/quota.h
/usr/include/x86_64-linux-gnu/sys/raw.h
/usr/include/x86_64-linux-gnu/sys/reboot.h
/usr/include/x86_64-linux-gnu/sys/reg.h
/usr/include/x86_64-linux-gnu/sys/resource.h
/usr/include/x86_64-linux-gnu/sys/select.h
/usr/include/x86_64-linux-gnu/sys/sem.h
/usr/include/x86_64-linux-gnu/sys/sendfile.h
/usr/include/x86_64-linux-gnu/sys/shm.h
/usr/include/x86_64-linux-gnu/sys/signalfd.h
/usr/include/x86_64-linux-gnu/sys/signal.h
/usr/include/x86_64-linux-gnu/sys/socket.h
/usr/include/x86_64-linux-gnu/sys/socketvar.h
/usr/include/x86_64-linux-gnu/sys/soundcard.h
/usr/include/x86_64-linux-gnu/sys/statfs.h
/usr/include/x86_64-linux-gnu/sys/stat.h
/usr/include/x86_64-linux-gnu/sys/statvfs.h
/usr/include/x86_64-linux-gnu/sys/stropts.h
/usr/include/x86_64-linux-gnu/sys/swap.h
/usr/include/x86_64-linux-gnu/sys/syscall.h
/usr/include/x86_64-linux-gnu/sys/sysctl.h
/usr/include/x86_64-linux-gnu/sys/sysinfo.h
/usr/include/x86_64-linux-gnu/sys/syslog.h
/usr/include/x86_64-linux-gnu/sys/sysmacros.h
/usr/include/x86_64-linux-gnu/sys/termios.h
/usr/include/x86_64-linux-gnu/sys/timeb.h
/usr/include/x86_64-linux-gnu/sys/time.h
/usr/include/x86_64-linux-gnu/sys/timerfd.h
/usr/include/x86_64-linux-gnu/sys/times.h
/usr/include/x86_64-linux-gnu/sys/timex.h
/usr/include/x86_64-linux-gnu/sys/ttychars.h
/usr/include/x86_64-linux-gnu/sys/ttydefaults.h
/usr/include/x86_64-linux-gnu/sys/types.h
/usr/include/x86_64-linux-gnu/sys/ucontext.h
/usr/include/x86_64-linux-gnu/sys/uio.h
/usr/include/x86_64-linux-gnu/sys/ultrasound.h
/usr/include/x86_64-linux-gnu/sys/un.h
/usr/include/x86_64-linux-gnu/sys/unistd.h
/usr/include/x86_64-linux-gnu/sys/user.h
/usr/include/x86_64-linux-gnu/sys/ustat.h
/usr/include/x86_64-linux-gnu/sys/utsname.h
/usr/include/x86_64-linux-gnu/sys/vfs.h
/usr/include/x86_64-linux-gnu/sys/vlimit.h
/usr/include/x86_64-linux-gnu/sys/vm86.h
/usr/include/x86_64-linux-gnu/sys/vt.h
/usr/include/x86_64-linux-gnu/sys/vtimes.h
/usr/include/x86_64-linux-gnu/sys/wait.h
/usr/include/x86_64-linux-gnu/sys/xattr.h
уже второй день убил на это.


Название: Re: Установка Qt на Linux для кросс-компиляции: Linux 32/64 Windows 32/64
Отправлено: qate от Май 12, 2015, 10:31
а нужна ли сборка win64 ? win32 запукается везде, чего ради 64 бита ?


Название: Re: Установка Qt на Linux для кросс-компиляции: Linux 32/64 Windows 32/64
Отправлено: _Konstantin_ от Май 12, 2015, 13:15
ПО не принимает 32х битные dll т.к. оно теперь 64х битное и ему нужно соответствующей битности dll...


Название: Re: Установка Qt на Linux для кросс-компиляции: Linux 32/64 Windows 32/64
Отправлено: qate от Май 13, 2015, 13:30
ПО не принимает 32х битные dll т.к. оно теперь 64х битное и ему нужно соответствующей битности dll...

как не принимает, если есть 32х сборка ?

почему используется qt4, а не qt5 ?


Название: Re: Установка Qt на Linux для кросс-компиляции: Linux 32/64 Windows 32/64
Отправлено: _Konstantin_ от Май 13, 2015, 14:27
У 64х битных программ вызов функций из dll происходит несколько иначе :) А Qt4 использую потому как у меня есть книжка по ней.


Название: Re: Установка Qt на Linux для кросс-компиляции: Linux 32/64 Windows 32/64
Отправлено: qate от Май 14, 2015, 08:31
У 64х битных программ вызов функций из dll происходит несколько иначе :) А Qt4 использую потому как у меня есть книжка по ней.

1. dll чья, есть исходники ? моя мысль о том, что если веских причин использовать 64 бита нет, то и не нужно собирать проект под 64 бита - лишнее проблемы в поддержке.

2. qt4 "устарело", никому не интересно будет разбираться почему оно не собирается под 64х. написанное в книге можно успешно использовать в qt5. в qt5 уже есть сборки под 64 бита.


Название: Re: Установка Qt на Linux для кросс-компиляции: Linux 32/64 Windows 32/64
Отправлено: _Konstantin_ от Май 14, 2015, 09:36
Исходники .dll есть, и веские причины есть, уже писал об этом - ПО для которого писалась .dll перешло на х64 и теперь из-за .dll выгружается и перестает работать, разработчики ПО так же написали, что теперь можно использовать .dll только х64, вот и озаботился.
А насчет устаревания Qt4 вы не правы, она не устарела и многие ее считают стабильнее Qt5, хотя наверное вы правы в том, что все равно уже пора переходить на Qt5. Вот только походу придется лопатить весь код написанный ранее на Qt4.


Название: Re: Установка Qt на Linux для кросс-компиляции: Linux 32/64 Windows 32/64
Отправлено: Fregloin от Май 25, 2015, 10:51
Что то я не нашёл х64 сборки Qt5 под винду, может плохо искал?
Кстати у меня получилось собирать виндовые экзешники под убунтой. Но возник нюанс при использовании библиотеки перехвата исключений, впрочем тоже решилось тупым копированием.