2009-10-02 9 views
6

Я разрабатываю приложение на основе qt, и я хотел бы разработать как 32-разрядную, так и 64-битную версию приложения на одном компьютере, используя те же источники, скрипты и т. Д. Машина Ubuntu Jaunty 64bit, Intel Core i7, 8 ГБ оперативной памяти. Я знаю, что, запустив VMWare или VirtualBox, вы можете заставить все работать, однако это не кажется хорошим решением, так как я хочу использовать процессор (i7) в полной мере. Я прочитал около chrooted окружающей среды, и мне кажется, что это была установка, которую я искал: мне нужна машина разработки, чтобы иметь возможность запускать только что созданные исполняемые файлы.Лучшая настройка Ubuntu для 32-битной * и * 64-разрядной разработки Qt-приложений?

У вас есть опыт в этом? Вы установили такой 32-битный chrooted env на 64-битный хост? Это хорошо работает? Как правильно настроить его?

ответ

5

Я был в подобной, но не точной ситуации. Я разрабатывал приложения Qt4 для 32-битных Windows, работая на 64-битной Jaunty. Окружающая среда chroot'd даст вам то, что вы хотите, с незначительным раздражением от необходимости перекрещиваться с ней, чтобы скомпилировать ваше 32-битное приложение.

Что я сделал для компиляции для Windows, так это настроить кросс-компилятор специально для этой цели. Вам, вероятно, не придется этого делать. Вероятно, вам удастся скомпилировать g ++ -m32 до 32 бит. Чтобы избежать необходимости редактировать make-файлы и такие миллионы раз, вы можете создавать/изменять/использовать specfiles, которые поставляются с Qt, так что вы можете сделать «qmake -project & & qmake -makefile spec blablabla» (Если я помню синтаксис команда правильно).

+0

Я узнал, что «/mkspecs /» содержит как linux-g ++ - 32, так и linux-g ++ - 64, и они специально добавляют -m32 и -m64. Однако я не являюсь pratical chrooting, поэтому я ищу руководство или что-то о том, как это сделать, и очистить некоторые неясные точки, которые у меня есть, то есть мне нужно запустить другой Xserver для запуска chrooted 32bit app ? – Manuel

+0

Если вы используете mkspecs, вам не нужно использовать chroot.На вашем компьютере должны быть установлены 32-разрядные и 64-разрядные библиотеки, но после этого вы можете запустить «qmake -project && qmake -makefile linux-g ++ - && make». Затем он должен основываться на любой битне, которую вы хотите. – ZachS

+0

Уверен, что вы правы, ZachS, я просто немного поработал: сначала я попробую mkspecs. – Manuel

3

Я тоже в подобной ситуации, и вот как я работаю:

Я использую пользовательский встроенную версию Qt. Я строю Qt дважды, с теми же параметрами конфигурации, за исключением параметра -платформы, который я установил в linux-g ++ - 64 для первой сборки и linux-g ++ - 32 для второй сборки. Я также использую другой -prefix для установки обеих версий в отдельных каталогах.

Я использую QtCreator для создания своих приложений. Я добавил обе версии Qt в диалоговом окне «Опции -> Qt4 -> Qt». Затем я настраивал две разные конфигурации сборки для своих проектов с одинаковыми параметрами сборки, но с одним, использующим 32-битный Qt-дир, и один с использованием 64-битного Qt-файла. QtCreator затем заботится обо всем магии, и мне просто нужно чередовать между конфигурациями сборки, чтобы иметь как 32-битное, так и 64-битное приложение Qt. Нет chroot, нет VM, нет ничего, просто простая сборка.

Однако есть одна оговорка. Для построения Qt для 32-бит, очевидно, требуются 32-битные версии большинства библиотек разработки (X libs, stdlibs и т. Д.), Которые легко доступны на Ubuntu Jaunty с ia32-libs и lib32stdC++ 6. Единственными библиотеками, которые мне не удалось найти для 32-битной разработки в архитектуре с 64-битным интерфейсом, являются gstreamer libs, что означает, что Phonon может не работать. Мне нужен Phonon, поэтому я работал над тем, чтобы создать Qt в виртуальной машине, а затем скопировать установленный каталог Qt на мою машину dev.

Удачи.

+0

спасибо, искал это. Я попробую ваш предложенный метод VM – KGCybeX

+0

Мне нужно запросить ваше решение. Я строю Qt5.5.1 в Ubuntu 16.04 (i386/32bit) VM. Помимо обычного './configure -prefix/path/to/Qt5-5-1/install /' и принятия флажков лицензии, вы указали какую-либо конкретную платформу или связанные флаги? Я использую './configure -opensource -nomake examples -nomake tests -confirm-license -prefix/opt/qt-5.5.1' Кажется ли это знакомым, не хватает ли какого-либо флага? – KGCybeX