1

我对交叉编译和 ARM 板很陌生。目前我对 ARM 板上的交叉编译和二进制执行有基本的想法。我想构建一个 QT 应用程序以在支持触摸屏的基于 ARM 的板上运行。该板已经配置了 QT 5 和 tslib。但是要使用 qmake 交叉编译应用程序,我需要在我的 ubuntu PC 中使用 tslib 交叉编译 QT。我能够在没有 tslib 的情况下构建这样的一个,并成功地在我的板上显示了一个应用程序。但是当我尝试使用 -tslib 配置 qt 时,配置过程会导致以下消息终止:

Note: No wayland-egl support detected. Cross-toolkit compatibility disabled.
WARNING: Cross compiling without sysroot. Disabling pkg-config
ERROR: Feature 'tslib' was enabled, but the pre-condition 'libs.tslib' failed.
Check config.log for details. 

这是我的 qtbase/mkspecs/linux-arm-gnueabi-g++ 内容:

MAKEFILE_GENERATOR      = UNIX
CONFIG                 += incremental
QMAKE_INCREMENTAL_STYLE = sublib

include(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)

QMAKE_INCDIR += /home/tslib/include/
QMAKE_LIBDIR += /home/tslib/lib/

# modifications to g++.conf
QMAKE_CC                = arm-none-linux-gnueabi-gcc
QMAKE_CXX               = arm-none-linux-gnueabi-g++
QMAKE_LINK              = arm-none-linux-gnueabi-g++
QMAKE_LINK_SHLIB        = arm-none-linux-gnueabi-g++

# modifications to linux.conf
QMAKE_AR                = arm-none-linux-gnueabi-ar cqs
QMAKE_OBJCOPY           = arm-none-linux-gnueabi-objcopy
QMAKE_NM                = arm-none-linux-gnueabi-nm -P
QMAKE_STRIP             = arm-none-linux-gnueabi-strip
load(qt_config)

这里是配置。命令:

./configure -opensource -confirm-license -xplatform linux-arm-gnueabi-g++ -prefix /usr/local/qt5.8embd -nomake examples -no-opengl -no-iconv -silent -qpa linuxfb -no-gtk -tslib

事实是我通过谷歌提供了错误的方法。我希望有人建议在启用 -tslib 的情况下交叉编译 QT 5.8.0 的简洁工作步骤。

脚注:我可以以间接方式构建 QT 应用程序吗?我的目标板上有所有必需的 .so 文件。我可以将它们复制到我的 PC 中,我可以只使用我的工具链交叉编译一个 Qt 项目吗?

4

1 回答 1

0

你的目标设备是什么?

像这样进行交叉开发时通常会做的事情是:

  1. 使用跨工具链提供的 sysroot(以 Linaro 为例)
  2. 使用您的目标文件系统作为 sysroot

在第一种情况下,您必须交叉编译您需要的所有依赖项并将它们添加到交叉工具链 sysroot。

在第二种情况下,您直接在目标上安装所需依赖项的开发包。然后,根据您设置开发环境的方式,您可以将设备文件系统的这个“新版本”复制到您的开发机器上,或者通过例如 sshfs 使其可用。

于 2017-03-14T13:47:47.477 回答