Raspberry Pi 2 和 Qt 5.7 - make 停留在 `../qtbase/bin/qmake -conf ../qtbase/qt.conf -o Makefile qt.pro`
Raspberry Pi 2 and Qt 5.7 - make stuck at `../qtbase/bin/qmake -conf ../qtbase/qt.conf -o Makefile qt.pro`
我试图在 上编译 Qt 5.7 的本机构建(我还没有对那个东西进行交叉编译...) Raspberry Pi2。我已经关注了tutorial on the official Qt wiki。我的 configure
步骤是:
./configure -v -opengl es2 -tslib -force-pkg-config -device linux-rasp-pi-g++ -device-option CROSS_COMPILE=/usr/bin/ \
-opensource -confirm-license -optimized-qmake -reduce-exports -release -qt-pcre -make libs \
-prefix /usr/local/qt5 2>&1 | tee config.out
我的设置与教程中的设置类似 - 我使用的是外部 USB 记忆棒,ext4
文件系统安装在 /media/USB
,mount --bind
来自 /media/USB/build/QT_SRC
到 /opt/QT_SRC
。已安装先决条件(包括 libxcb-xinerama0
和 libxcb-xinerama0-dev
,文章指出这是 Qt5.6 及更高版本所必需的)。 !1GB swapfile
也被添加到 USB 驱动器。
我执行后./configure
我执行了
time make -j3 2>&1 | tee make.out
我也试过普通的 make
(不支持并行编译和链接)。结果是一样的:
/opt/QT_SRC/qtbase/bin/qmake -qtconf /opt/QT_SRC/qtbase/bin/qt.conf -o Makefile qt.pro
/opt/QT_SRC/qtbase/bin/qmake -qtconf /opt/QT_SRC/qtbase/bin/qt.conf -o Makefile qt.pro
/opt/QT_SRC/qtbase/bin/qmake -qtconf /opt/QT_SRC/qtbase/bin/qt.conf -o Makefile qt.pro
/opt/QT_SRC/qtbase/bin/qmake -qtconf /opt/QT_SRC/qtbase/bin/qt.conf -o Makefile qt.pro
/opt/QT_SRC/qtbase/bin/qmake -qtconf /opt/QT_SRC/qtbase/bin/qt.conf -o Makefile qt.pro
/opt/QT_SRC/qtbase/bin/qmake -qtconf /opt/QT_SRC/qtbase/bin/qt.conf -o Makefile qt.pro
...
...
...
/opt/QT_SRC/qtbase/bin/qmake -qtconf /opt/QT_SRC/qtbase/bin/qt.conf -o Makefile qt.pro
这就是我得到的全部。它在很长一段时间内重复并重复自己很多次。我想在睡觉时进行部分构建,所以我只是 运行 make
在我睡觉前...6.5 小时前。现在我醒了,我发现了这个……结果。我显然在那里有 qmake
否则会触发错误,但我不知道这里发生了什么。
有没有人尝试在 Raspberry Pi 2 上构建 Qt 5.7 并遇到这个奇怪的问题?
出于某种原因,顶级 configure
无法正常工作(至少在我的情况下...)。我不得不从那里进入 qtbase
和 运行。您可以遵循 official guide on building Qt 5 natively on the Pi but it appears that not everything will be compiled and installed. The solution of this problem came from this post 中的大部分说明:
cd
到 Qt 5 源代码的顶级目录
$ cd QT_SRC_ROOT_DIRECTORY
选择您要构建和安装的模块并执行
$ for module in qtcharts qtdatavis3d qtimageformats qtsvg ...;
> do
> cd QT_SRC_ROOT_DIRECTORY/$module
> QT_SRC_ROOT_DIRECTORY/qtbase/bin/qmake
> make
> sudo make install
> done
这基本上通过进入内部循环遍历每个模块,运行ning qmake
(这就是为什么你首先必须编译里面的内容 qtbase
这样你就可以拥有 qmake
二进制 - 除了 qtbase
所有其他模块都基于 pro
文件,即只能与 qmake
工具一起使用的 Qt 项目文件),然后 make
最后 sudo make install
.
我使用了绝对路径(与提到的博客 post 不同),因为 for
循环中的 ../$module
实际上不起作用,但使用绝对路径非常有效。所以在我的例子中,我有 /opt/QT_SRC 作为我的 QT_SRC_ROOT_DIRECTORY
,所以我将它添加到那个循环中以访问每个 $module
。我的 qmake
位于 /opt/QT_SRC/qtbase/bin/qmake
.
希望这对其他人有帮助。现在,我的 Raspberry Pi 2
上的 Qt 5.7
功能齐全,包括 GPL 模块 QtCharts
和 QtDataVisualization
。刚刚测试了触摸示例以及 OpenGL Qt 立方体示例 - 太棒了!
PS: Pi 的本机和交叉编译版本的文档需要认真更新和修复...并研究如何正确地做事。
我 运行 在 Raspberry Pi 上构建 Qt 5.7 时遇到同样的问题 3. 我通过单独构建和安装所有模块解决了这个问题,从 qtbase 开始,像这样:
$ .../qtbase/bin/qmake
$ make
$ make install
建筑的顺序很重要。我不记得我遵循的顺序,但是,如果某些 Qt 模块需要先构建另一个模块,则会产生错误。错误信息是这样的:
Some of the required modules (qtHaveModule(???)) are not available
我没有构建一些模块,如 qtwayland、qtwebview 或 qtwebengine,因为它们需要安装一些其他东西,而我不需要它们。
在构建 Qt 5.7 并配置我的 Raspberry Pi 之后,我可以 运行 我的所有 Qt 应用程序成功。
我试图在 上编译 Qt 5.7 的本机构建(我还没有对那个东西进行交叉编译...) Raspberry Pi2。我已经关注了tutorial on the official Qt wiki。我的 configure
步骤是:
./configure -v -opengl es2 -tslib -force-pkg-config -device linux-rasp-pi-g++ -device-option CROSS_COMPILE=/usr/bin/ \
-opensource -confirm-license -optimized-qmake -reduce-exports -release -qt-pcre -make libs \
-prefix /usr/local/qt5 2>&1 | tee config.out
我的设置与教程中的设置类似 - 我使用的是外部 USB 记忆棒,ext4
文件系统安装在 /media/USB
,mount --bind
来自 /media/USB/build/QT_SRC
到 /opt/QT_SRC
。已安装先决条件(包括 libxcb-xinerama0
和 libxcb-xinerama0-dev
,文章指出这是 Qt5.6 及更高版本所必需的)。 !1GB swapfile
也被添加到 USB 驱动器。
我执行后./configure
我执行了
time make -j3 2>&1 | tee make.out
我也试过普通的 make
(不支持并行编译和链接)。结果是一样的:
/opt/QT_SRC/qtbase/bin/qmake -qtconf /opt/QT_SRC/qtbase/bin/qt.conf -o Makefile qt.pro
/opt/QT_SRC/qtbase/bin/qmake -qtconf /opt/QT_SRC/qtbase/bin/qt.conf -o Makefile qt.pro
/opt/QT_SRC/qtbase/bin/qmake -qtconf /opt/QT_SRC/qtbase/bin/qt.conf -o Makefile qt.pro
/opt/QT_SRC/qtbase/bin/qmake -qtconf /opt/QT_SRC/qtbase/bin/qt.conf -o Makefile qt.pro
/opt/QT_SRC/qtbase/bin/qmake -qtconf /opt/QT_SRC/qtbase/bin/qt.conf -o Makefile qt.pro
/opt/QT_SRC/qtbase/bin/qmake -qtconf /opt/QT_SRC/qtbase/bin/qt.conf -o Makefile qt.pro
...
...
...
/opt/QT_SRC/qtbase/bin/qmake -qtconf /opt/QT_SRC/qtbase/bin/qt.conf -o Makefile qt.pro
这就是我得到的全部。它在很长一段时间内重复并重复自己很多次。我想在睡觉时进行部分构建,所以我只是 运行 make
在我睡觉前...6.5 小时前。现在我醒了,我发现了这个……结果。我显然在那里有 qmake
否则会触发错误,但我不知道这里发生了什么。
有没有人尝试在 Raspberry Pi 2 上构建 Qt 5.7 并遇到这个奇怪的问题?
出于某种原因,顶级 configure
无法正常工作(至少在我的情况下...)。我不得不从那里进入 qtbase
和 运行。您可以遵循 official guide on building Qt 5 natively on the Pi but it appears that not everything will be compiled and installed. The solution of this problem came from this post 中的大部分说明:
cd
到 Qt 5 源代码的顶级目录$ cd QT_SRC_ROOT_DIRECTORY
选择您要构建和安装的模块并执行
$ for module in qtcharts qtdatavis3d qtimageformats qtsvg ...; > do > cd QT_SRC_ROOT_DIRECTORY/$module > QT_SRC_ROOT_DIRECTORY/qtbase/bin/qmake > make > sudo make install > done
这基本上通过进入内部循环遍历每个模块,运行ning qmake
(这就是为什么你首先必须编译里面的内容 qtbase
这样你就可以拥有 qmake
二进制 - 除了 qtbase
所有其他模块都基于 pro
文件,即只能与 qmake
工具一起使用的 Qt 项目文件),然后 make
最后 sudo make install
.
我使用了绝对路径(与提到的博客 post 不同),因为 for
循环中的 ../$module
实际上不起作用,但使用绝对路径非常有效。所以在我的例子中,我有 /opt/QT_SRC 作为我的 QT_SRC_ROOT_DIRECTORY
,所以我将它添加到那个循环中以访问每个 $module
。我的 qmake
位于 /opt/QT_SRC/qtbase/bin/qmake
.
希望这对其他人有帮助。现在,我的 Raspberry Pi 2
上的 Qt 5.7
功能齐全,包括 GPL 模块 QtCharts
和 QtDataVisualization
。刚刚测试了触摸示例以及 OpenGL Qt 立方体示例 - 太棒了!
PS: Pi 的本机和交叉编译版本的文档需要认真更新和修复...并研究如何正确地做事。
我 运行 在 Raspberry Pi 上构建 Qt 5.7 时遇到同样的问题 3. 我通过单独构建和安装所有模块解决了这个问题,从 qtbase 开始,像这样:
$ .../qtbase/bin/qmake
$ make
$ make install
建筑的顺序很重要。我不记得我遵循的顺序,但是,如果某些 Qt 模块需要先构建另一个模块,则会产生错误。错误信息是这样的:
Some of the required modules (qtHaveModule(???)) are not available
我没有构建一些模块,如 qtwayland、qtwebview 或 qtwebengine,因为它们需要安装一些其他东西,而我不需要它们。 在构建 Qt 5.7 并配置我的 Raspberry Pi 之后,我可以 运行 我的所有 Qt 应用程序成功。