32位和64位Qt应用程序开发的最佳Ubuntu设置是什么?

6
我正在开发一个基于Qt的应用程序,并希望在同一台机器上开发32位和64位版本的应用程序,共享相同的源代码、脚本等等。 这台机器是Ubuntu Jaunty 64位,Intel Core i7,8GB内存。 我知道通过运行VMWare或VirtualBox可以让事情正常工作,但这似乎不是一个好的解决方案,因为我想要充分利用处理器(i7)的性能。 我了解到有一个名为chrooted环境,它似乎是我正在寻找的设置:我需要开发机器也能够运行刚刚构建的可执行文件。
你有没有这方面的经验?你在64位主机上设置过这样的32位chrooted环境吗?它是否运行良好?如何正确设置它?
2个回答

5
我曾经遇到过类似的情况,不完全相同。当我在64位的Jaunty系统上开发32位的Windows Qt4应用程序时,chroot'd环境可以给你想要的结果,但需要切换到它来编译32位应用程序,可能有些麻烦。
为了编译Windows应用程序,我设置了一个专门用于此目的的交叉编译器。您可能不必这样做。您可以使用g++ -m32编译成32位。为了避免多次编辑makefiles等文件,您可以创建/修改/使用Qt附带的specfiles,以便执行“qmake -project && qmake -makefile spec blablabla”(如果我记得命令语法正确的话)。

我发现 "<qtdir>/mkspecs/" 目录包含了 linux-g++-32 和 linux-g++-64,这两个分别添加了 -m32 和 -m64。然而,我不太熟悉 chroot,所以我正在寻找一个指南或类似的东西来指导我如何操作,并且消除我对其的一些模糊点,例如,运行 chrooted 的 32 位应用程序是否需要启动另一个 Xserver? - Manuel
如果您使用mkspecs,就不需要使用chroot。您需要在计算机上安装32位和64位库,但之后,您可以运行“qmake -project && qmake -makefile linux-g++-<some number> && make”。然后它应该能够在任何位数上构建。 - ZachS
你说得没错,ZachS。我有点混淆了:我打算先尝试mkspecs。 - Manuel

3
我也有类似的情况,以下是我的解决方案:
我使用自定义版本的Qt。我使用相同的配置选项构建Qt两次,除了-platform参数之外,第一次构建时将其设置为linux-g++-64,第二次构建时将其设置为linux-g++-32。我还使用不同的-prefix在单独的目录中安装两个版本。
我使用QtCreator构建我的应用程序。我已经在“选项” -> “Qt4” -> “Qt版本”对话框中添加了两个Qt版本。然后,我为项目设置了两个不同的构建配置,具有相同的构建选项,但其中一个使用32位Qt目录,另一个使用64位Qt目录。 QtCreator会处理所有魔法,我只需要在构建配置之间交替即可拥有32位和64位的Qt应用程序。没有chroot,没有VM,没有任何其他东西,只需简单构建即可。
然而,有一个注意点。为32位构建Qt显然需要大多数开发库(X libs,stdlibs等)的32位版本,在Ubuntu Jaunty上很容易获得ia32-libs和lib32stdc++6。我在64位架构上没有找到32位开发的gstreamer libs,这意味着Phonon可能无法工作。我需要Phonon,所以我通过在VM中构建Qt,然后将Qt的安装目录复制回我的开发机器来解决这个问题。
祝好运。

谢谢,我一直在寻找这个。我会尝试你建议的虚拟机方法。 - CybeX
我需要查询您的解决方案。我正在Ubuntu 16.04(i386 / 32位)虚拟机中构建Qt5.5.1。除了通常的./configure -prefix /path/to/Qt5-5-1/install/和接受许可证标志之外,您是否指定了任何特定的平台或相关标志?我正在使用./configure -opensource -nomake examples -nomake tests -confirm-license -prefix /opt/qt-5.5.1。这听起来熟悉吗?我是否漏掉了任何标志? - CybeX

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接