6

我正在开发一个基于 qt 的应用程序,我想在同一台机器上开发 32 位和 64 位版本的应用程序,共享相同的源、脚本等。这台机器是 Ubuntu Jaunty 64 位,英特尔酷睿 i7, 8GB 内存。我知道通过运行 VMWare 或 VirtualBox 可以让事情正常运行,但它似乎不是一个好的解决方案,因为我想充分利用处理器 (i7)。我读到了一个chrooted环境,在我看来它可能是我正在寻找的设置:我需要开发机器也能够运行刚刚构建的可执行文件。

你有这方面的经验吗?您是否在 64 位主机上设置了这样的 32 位 chrooted 环境?它运作良好吗?如何正确设置它?

4

2 回答 2

5

我也遇到过类似的情况,但不完全一样。我正在为 32 位 Windows 开发 Qt4 应用程序,同时在 64 位 Jaunty 上运行。一个 chroot 的环境会给你你想要的东西,但你需要 chroot 来编译你的 32 位应用程序。

我为 Windows 编译所做的就是专门为此目的设置一个交叉编译器。您可能不必这样做。您可能可以将 g++ -m32 编译为 32 位。为了避免编辑 makefile 和如此大量的时间,您可以创建/修改/使用 Qt 附带的规范文件,这样您就可以执行“qmake -project && qmake -makefile spec blablabla”(如果我记得命令正确)。

于 2009-10-02T12:14:37.303 回答
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 库,这意味着 Phonon 可能无法工作。我需要 Phonon,所以我通过在 VM 中构建 Qt 来解决这个问题,然后将 Qt 的安装目录复制回我的开发机器上。

祝你好运。

于 2009-10-02T14:39:47.713 回答