jacky

A technique blog for jacky

here are my artitles about work(embeded system develop, docker, etc.) and life(cook, hiking)


Ubuntu16.04+qt5.9.3+imx6交叉编译环境

#ubuntu16.04+Qt5.9.3搭建交叉编译环境

0 安装交叉编译工具链

####0-0 下载交叉编译工具链 linaro版本

gcc-linaro-arm-linux-gnueabihf

解压到任意路径,添加路径到环境变量,profile或~/.bashrc ,然后source

修改profile文件后需要重启生效

0-1输入arm,按tab确认环境变量是否正确

##1 交叉编译tslib

####1-0 下载tslib-master源码,解压

####1-1 安装工具

apt-get install autoconf automake dh-autoreconf libtool

1-2 执行脚本

./autogen.sh

####1-3 配置

./configure --host=arm-none-linux-gnueabi--cache-file=arm-none-linux-gnueabi.cache --enable-inputapi=no ac_cv_func_malloc_0_nonnull=yes --prefix=/opt/tslib/ CC=/home/toolchain/arm-2014.09/bin/arm-linux-gnueabihf-gcc

注意CC是交叉编译链的路径

#### 1-4 编译

make

#### 1-5 安装

make install

1-6 移植到开发板,修改配置文件和环境变量

1-6-0

通过超级终端,打开tslib文件夹下的etc/ts.conf文件

将# module_raw input一行前面的符号和空格去掉,注意空格也不能留

1-6-1

再打开环境变量文件/etc/profile,并添加相应内容

[root@DCP-3000L usr]# vi /etc/profile

export TSLIB_ROOT=/usr/local/tslib

export TSLIB_TSDEVICE=/dev/input/event2

export QWS_MOUSE_PROTO=tslib:/dev/input/event2

export TSLIB_CALIBFILE=/etc/pointercal

export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf

export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts

export TSLIB_FBDEVICE=/dev/fb0

export TSLIB_CONSOLEDEVICE=none

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOT/lib

其中,TSLIB_ROOT更换为自己实际存放的路径;

另外,TSLIB_TSDEVICE 和QWS_MOUSE_PROTO这两项需要查看自己的板子的触摸屏设备对应/dev/input/下那个文件

1-6-2

执行测试命令,重启开发板(使系统读取profile环境变量),进入tslib/bin目录,执行触摸屏校准程序

[root@DCP-3000L usr]# ./ts_calibrate

##2.安装Qt5.9.3交叉编译环境

2-1下载Qt5.9.3 源码,xxxxxx.run

添加可执行权限,然后安装,勾选所有套件,直到安装完毕

2-2进入源码目录,添加配置文件

touch autoconfig.sh

vim autoconfig.sh

./configure
-prefix /opt/qt5.9.3-arm
-confirm-license
-opensource
-release
-make libs
-xplatform linux-arm-gnueabi-g++
-pch
-qt-libjpeg
-qt-libpng
-qt-zlib
-tslib
-no-opengl
-no-sse2
-no-openssl
-no-separate-debug-info
-make libs
-nomake tools
-nomake examples
-nomake tests
-silent
-I /opt/tslib/include
-L /opt/tslib/lib
-c++std c++11
-strip
-no-dbus
-no-qml-debug
-no-journald
-qpa linuxfb -linuxfb
-skip qt3d
-skip qtandroidextras
-skip qtcanvas3d
-skip qtdatavis3d
-skip qtdoc
-skip qtgamepad
-skip qtgraphicaleffects
-skip qtmacextras
-skip qtnetworkauth
-skip qtpurchasing
-skip qtquickcontrols
-skip qtquickcontrols2
-skip qtremoteobjects
-skip qtsvg
-skip qttools
-skip qtwayland
-skip qtwebchannel
-skip qtwebengine
-skip qtwebsockets
-skip qtwebview
-skip qtx11extras
-skip qtwinextras

chmod a+x autoconfig.sh

-qt-mouse-tslib: 表示将使用 tslib 来驱动触摸屏;

**-I /home/user/libfile/tslib/include **

-L /home/user/libfile/tslib/lib 对应的就是上一步移植的tslib的头文件和库文件路径

-prefix=(自己的路径)

2-3安装库arm-linux-gnueabi-ar(可选)

sudo apt install binutils-arm-linux-gnueabi

我在make过程中出现了error,根据系统提示安装指定的库可以解决

2-4再次确认环境变量

建议在/etc/profile 和 ~/.bashrc中都添加交叉工具链的环境变量,然后source

2-5修改qmake.conf文件

cd /home/xxxx/Qt5.9.3/5.9.3/Src/qtbase/mkspecs/linux-arm-gnueabi-g++/

vim qmake.conf

#

# qmakeconfiguration for building with arm-linux-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)

# modifications tog++.conf

QMAKE_CC = arm-linux-gnueabihf-gcc -lts

QMAKE_CXX = arm-linux-gnueabihf-g++ -lts

QMAKE_LINK = arm-linux-gnueabihf-g++ -lts

QMAKE_LINK_SHLIB = arm-linux-gnueabihf-g++ -lts

注意添加hf

#modifications tolinux.conf

QMAKE_AR = arm-linux-gnueabi-ar cqs

QMAKE_OBJCOPY = arm-linux-gnueabi-objcopy

QMAKE_NM = arm-linux-gnueabi-nm -P

QMAKE_STRIP = arm-linux-gnueabi-strip

load(qt_config)

QMAKE_INCDIR =/opt/tslib/include

QMAKE_LIBDIR =/opt/tslib/lib

2-4开始编译

./autoconfig.sh

make

make jx

x = 机器核心数

####2-5安装交叉编译后的Qt库

sudo make install

然后去/opt/路径下查看安装的文件

####2-6设置qmake-arm的环境变量

alias qmake-arm=/生成qmake的路径

source 生效

输入qmake-arm -v 验证版本

至此,Qt的嵌入式开发环境安装完成

###3 移植Qt到开发板

3-0拷贝上一步搭建好的Qt开发环境库文件至开发板

3-1

打开环境变量文件/etc/profile,并添加相应内容设置环境变量

export QTDIR=/opt/qt5.9.3

export PATH=$QTDIR/bin:$PATH

export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

export QWS_MOUSE_PROTO=tslib:/dev/input/event2

export QT_QWS_FONTDIR=QTDIR/lib/fonts

3-2

找一个demo应用程序,使用qmake-arm编译

qmake-arm -project

qmake-arm

make

然后拷贝执行程序到开发板验证

最近的文章

Samba_for_ubuntu16.04

ubuntu16.04搭建samba0 install sambasudo apt-get install samba samba-common-bin1 add usersudo smbpasswd -a user-name2 edit smb.conf[home]​ comment = Home Directories​ browseale = yes​ read only = no​ create mask = 0755​ directory mask = 07553 启动samba...…

继续阅读
更早的文章

调用驱动程序

#include<stdio.h>#include<sys/types.h>#include<sys/stat.h>#include<fcntl.h>#include<unistd.h>#include<sys/ioctl.h>void main(void){ int fd; char *hello_node = "/dev/hello_ctl123"; if((fd = open(hello_node, O_R...…

继续阅读