交叉编译Qt5.10.0编译移植到imx6-Linux-Arm-A9

Qt5.10.0移植到freescale imx6

一、环境

HOST:deepin

Embedded:freescale imx6 linux-3.0.35

CROSS_COMPILE:freescale提供的交叉编译器

二、下载源码

http://mirrors.ustc.edu.cn/qtproject/archive/qt/5.10/5.10.0/single/

三、解压

unzip qt-everywhere-opensource-src-5.10.0.tar.gz

cd qt-everywhere-opensource-src-5.10.0

四、指定arm架构、交叉编译器、包含的文件系统头文件、部分编译参数

vi qtbase/mkspecs/devices/linux-imx6-g++/qmake.conf

以下为全部内容,其他平台qtbase/mkspecs/devices/下要是没有单独提供,可以使用qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf,需根据自己平台做相应修改。

#
# qmake configuration for the Freescale iMX6 boards (single, dual and quad)
#
# The configuration below is set up for running with EGL on the framebuffer via
# the eglfs platform plugin and its eglfs_viv backend.

# Wayland is also fully functional out of the box. However, when writing Wayland
# *compositors* with Qt, the eglfs backend will have to be switched to
# eglfs_viv_wl by setting the QT_QPA_EGLFS_INTEGRATION environment variable.
#
# Below is an example configure line that assumes the SDK is in
# $HOME/imx6/toolchain. On device Qt is expected to be placed under
# /usr/local/qt5 whereas on the host 'make install' will copy the host tools and
# the target libraries to $HOME/imx6/qt5.
#
# ./configure -prefix /usr/local/qt5 -extprefix $HOME/imx6/qt5 -device linux-imx6-g++ \
#   -device-option CROSS_COMPILE=$HOME/imx6/toolchain/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi- \
#   -sysroot $HOME/imx6/toolchain/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi \
#   -nomake examples -nomake tests -v
#

include(../common/linux_device_pre.conf)

QMAKE_LIBS_EGL         += -lEGL
QMAKE_LIBS_OPENGL_ES2  += -lGLESv2 -lEGL -lGAL
QMAKE_LIBS_OPENVG      += -lOpenVG -lEGL -lGAL

IMX6_CFLAGS             = -march=armv7-a -mfpu=neon -DLINUX=1 -DEGL_API_FB=1
QMAKE_CFLAGS           += $$IMX6_CFLAGS
QMAKE_CXXFLAGS         += $$IMX6_CFLAGS

DISTRO_OPTS += hard-float

# Preferred eglfs backend
EGLFS_DEVICE_INTEGRATION = eglfs_viv

include(../common/linux_arm_device_post.conf)

load(qt_config)

五、根据自己实际需求配置QT

是的你没看错,其实QT提供了完整的编译命令,我们只用修改对应的参数,和编译选项就行了

./configure -prefix /home/shining/arm/Qt5.12.4 -extprefix /opt/poky/1.6.2/sysroots/i686-pokysdk-linux/usr/bin/qt5 -device linux-imx6-g++ \
   -device-option CROSS_COMPILE=/opt/poky/1.6.2/sysroots/i686-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi- \
   -sysroot /opt/poky/1.6.2/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi \
   -nomake tests -v
CROSS_COMPILE= 指定交叉编译器路径,注意 末尾只是到这里-gnueabi- ;

配置结果如下:

[cpp] view plain copy

print?
Build options:
Configuration … accessibility alsa audio-backend c++11 clock-gettime clock-monotonic compile_examples concurrent cross_compile dbus eglfs_viv enable_new_dtags evdev eventfd freetype full-config getaddrinfo getifaddrs harfbuzz inotify ipv6ifname large-config largefile linuxfb medium-config minimal-config mremap neon nis no-pkg-config opengl opengles2 openvg pcre png posix_fallocate qpa qpa reduce_exports release rpath shared small-config system-jpeg tslib zlib
Build parts … libs examples
Mode … release
Using sanitizer(s)… none
Using C++11 … yes
Using gold linker… no
Using new DTAGS … yes
Using PCH … no
Target compiler supports:
Neon … yes

Qt modules and options:
Qt D-Bus … yes (loading dbus-1 at runtime)
Qt Concurrent … yes
Qt GUI … yes
Qt Widgets … yes
Large File … yes
QML debugging … yes
Use system proxies … no

Support enabled for:
Accessibility … yes
ALSA … yes
CUPS … no
Evdev … yes
FontConfig … no
FreeType … yes (bundled copy)
Glib … no
GStreamer … no
GTK theme … no
HarfBuzz … yes (bundled copy)
Iconv … no
ICU … no
Image formats:
GIF … yes (plugin, using bundled copy)
JPEG … yes (plugin, using system library)
PNG … yes (in QtGui, using bundled copy)
journald … no
libinput… no
mtdev … no
Networking:
getaddrinfo … yes
getifaddrs … yes
IPv6 ifname … yes
libproxy… no
OpenSSL … no
NIS … yes
OpenGL / OpenVG:
EGL … no
OpenGL … yes (OpenGL ES 2.0+)
OpenVG … yes-auto
PCRE … yes (bundled copy)
pkg-config … no
PulseAudio … no
QPA backends:
DirectFB … no
EGLFS … no
EGLFS i.MX6… . yes
EGLFS KMS … no
EGLFS Mali … no
EGLFS Raspberry Pi . no
EGLFS X11 … no
LinuxFB … yes
XCB … no
Session management … yes
SQL drivers:
DB2 … no
InterBase … no
MySQL … no
OCI … no
ODBC … no
PostgreSQL … no
SQLite 2 … no
SQLite … yes (plugin, using bundled copy)
TDS … no
tslib … yes
udev … no
xkbcommon-x11… no
xkbcommon-evdev… no
zlib … yes (bundled copy)

六、编译安装

1、make -j8

2、make install

七、copy到开发板设置环境变量

1、将qt5.10.0打包拷贝到文件系统/usr/local/下,其中包含了qt5的examples,可以删除。

2、添加QT系统环境变量

vi /etc/profile添加
#for QT
export QT_ROOT=/usr/local/qt5.5.1
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/lib:/usr/lib:$QT_ROOT/lib
export QT_QPA_PLATFORM_PLUGIN_PATH=$QT_ROOT/plugins
export QT_QPA_PLATFORM=linuxfb:tty=/dev/fb0
export QT_QPA_FONTDIR=$QT_ROOT/lib/fonts
export QT_QPA_GENERIC_PLUGINS=evdevtouch:/dev/input/event0
export PATH=/bin:/sbin:/usr/bin/:/usr/sbin

export QML2_IMPORT_PATH=$QT_ROOT/qml

#export QT_QPA_GENERIC_PLUGINS=tslib:$TSLIB_TSDEVICE//如果触摸使用TSlib支持则修改为该句。

#export QT_QPA_EGLFS_FB=/dev/fb1

注:QT触摸屏支持可以不使用tslib。

3、tslib移植及支持请看http://blog.csdn.net/xishuang_gongzi/article/details/49422879

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JNA(Java Native Access)是一种用于在Java程序中调用本地(非Java)代码的技术。JNA是Java的一个库,它提供了一组Java类和方法,允许Java程序直接访问本地的C、C++或其他本机编程语言的函数和数据结构。通过使用JNA,用户不需要编写任何本地的包装代码,可以直接在Java中调用本地函数。 JNA-5.10.0-API文档是JNA的应用程序编程接口(API)的文档,它提供了有关如何在Java程序中使用JNA的详细说明。这个文档中包含了JNA库的各种类、方法和字段的说明,以及使用示例和代码片段。本文档还提供了JNA库的中英文对照版,方便使用者在理解和使用JNA时进行参考。 在JNA-5.10.0-API文档中,用户可以找到各种类和接口的详细说明,例如Library类、Native类、PointerType类等等。这些类提供了许多常用的JNA函数和工具,使用户能够方便地编写调用本地代码的Java程序。 此外,JNA-5.10.0-API文档还提供了一些其他的资源和链接,以帮助用户更好地理解和使用JNA库。例如,文档还包括了一些常见问题和解答,以及一些有用的示例代码。 总之,JNA-5.10.0-API文档是帮助用户理解和使用JNA库的一份重要指南。它提供了详细的介绍和说明,方便用户在Java程序中调用本地代码,并加速开发过程。用户可以从文档中获取所需的信息,并根据示例代码进行实践,以在自己的项目中成功使用JNA库。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值