1. 程式人生 > >jz2440移植QT5.6【學習筆記】【原創】

jz2440移植QT5.6【學習筆記】【原創】

平臺:jz2440

作者:莊澤彬(歡迎轉載,請註明作者)

交叉編譯工具:arm-linux-gcc (GCC)4.4.3

linux:linu3.4.2

PC環境:ubuntu18.04

一、修改/opt/FriendlyARM/toolschain/4.4.3arm-none-linux-gnueabi/sys-root/usr/include/linux/input.h,將EV_VERSION改為0x010001

 

 

二、製作檔案系統

2.1解壓busybox

1 tar -xvf busybox-1.20.0.tar.bz2

2.2設定交叉工具鏈

1 make menuconfig

編譯:

1 make 

建立安裝的目錄:

1 mkdir -pv /work/nfs_root/qt/fs_mini_install

安裝:

1 make install CONFIG_PREFIX=/work/nfs_root/qt/fs_mini_install

檢視是否安裝成功:

1 [email protected]:/work/nfs_root/qt/fs_mini_install$ tree -L 1
2 .
3 ├── bin
4 ├── linuxrc -> bin/busybox
5 ├── sbin
6 └── usr
7 8 3 directories, 1 file

從交叉工具鏈安裝glibc:

1 mkdir lib usr/lib
2 cp /opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi/lib/*.so* lib/ -d
3 cp /opt/FriendlyARM/toolschain/4.4.3/lib/*.so* lib/ -d

建立etc目錄:

1 mkdir etc

在etc目錄下建立inittab檔案:

1 vim inittab     //內容從第2行開始
2 # /etc/inittab
3 ::sysinit:/etc/init.d/rcS
4 console::askfirst:-/bin/sh 5 tty1::askfirst:-/bin/sh 6 ::ctrlaltdel:/sbin/reboot 7 ::shutdown:/bin/umount -a -r

在etc目錄下穿件init.d/rcS檔案:

 1 mkdir init.d
 2 vim init.d/rcS
 3 chmod a+x init.d/rcS  //內容如下
 4 #!/bin/sh
 5   
 6 mount -a
 7 mkdir /dev/pts
 8 mount -t devpts devpts /dev/pts
 9 echo /sbin/mdev > /proc/sys/kernel/hotplug
10 mdev -s

在etc目錄下建立fstab檔案:內容如下:

1 # device     mount-point    type   options        dump  fsck order
2 proc           /proc        proc   defaults        0     0
3 tmpfs          /tmp         tmpfs  defaults        0     0
4 sysfs          /sys         sysfs  defaults        0     0
5 tmpfs          /dev         tmpfs  defaults        0     0

建立dev目錄:

1 mkdir dev
2 sudo mknod console c 5 1
3 sudo mknod null c 1 3

建立其他目錄:

1 mkdir proc tmp mnt sys root

將fs_mini_install目錄製作成檔案系統映象命令:

1 mkfs.jffs2 -n -s 2048 -e 128KiB -d fs_mini_install -o fs_mini_install.jffs2

 三、tslib的移植

1 tar xzf tslib-1.4.tar.gz
2 cd tslib
3 ./autogen.sh 
4 
5 mkdir tmp
6 echo "ac_cv_func_malloc_0_nonnull=yes" >arm-linux.cache
7 ./configure --host=arm-linux --cache-file=arm-linux.cache --prefix=$(pwd)/tmp
8 make
9 make install

安裝:

1 cd tmp
2 cp * /work/nfs_root/qt/fs_mini_install/usr/local/tslib/ -rf

修改tslib:

1 修改 /etc/ts.conf第1行(去掉#號和第一個空格):
2 # module_raw input
3 改為:
4 module_raw input

測試:

設定環境變數

 1 vim etc/profile    //內容從第2行開始
 2 #!/bin/sh
 3   
 4 export T_ROOT=/usr/local/tslib
 5 
 6 export LD_LIBRARY_PATH=/usr/local/tslib/lib:$LD_LIBRARY_PATH
 7 
 8 export TSLIB_CONSOLEDEVICE=none
 9 
10 export TSLIB_FBDEVICE=/dev/fb0
11 
12 export TSLIB_TSDEVICE=/dev/event0
13 
14 export TSLIB_PLUGINDIR=$T_ROOT/lib/ts
15 
16 export TSLIB_CONFFILE=$T_ROOT/etc/ts.conf
17 
18 export POINTERCAL_FILE=/etc/pointercal
19 
20 export TSLIB_CALIBFILE=/etc/pointercal

執行校準測試例子:

1 cd /usr/local/tslib/bin
2 ./ts_calibrate

五、移植QT 

下載連結qt5.6:https://download.qt.io/archive/qt/5.6/5.6.0/single/

解壓:

1 tar -xvf qt-everywhere-opensource-src-5.6.0.tar.gz

修改配置檔案:

 1 vim qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf
 2 修改或新增如下內容:
 3 # modifications to g++.conf
 4 QMAKE_CC                = arm-none-linux-gnueabi-gcc -lts
 5 QMAKE_CXX               = arm-none-linux-gnueabi-g++ -lts
 6 QMAKE_LINK              = arm-none-linux-gnueabi-g++ -lts
 7 QMAKE_LINK_SHLIB        = arm-none-linux-gnueabi-g++ -lts
 8 
 9 # modifications to linux.conf
10 QMAKE_AR                = arm-none-linux-gnueabi-ar cqs
11 QMAKE_OBJCOPY           = arm-none-linux-gnueabi-objcopy
12 QMAKE_NM                = arm-none-linux-gnueabi-nm -P
13 QMAKE_STRIP             = arm-none-linux-gnueabi-strip
14 load(qt_config)
15 
16 QT_QPA_DEFAULT_PLATFORM = linuxfb
17 QMAKE_CFLAGS += -msoft-float -D__GCC_FLOAT_NOT_NEEDED -march=armv4t -mtune=arm920t
18 QMAKE_CXXFLAGS += -msoft-float -D__GCC_FLOAT_NOT_NEEDED -march=armv4t -mtune=arm920t

配置命令:

1 ./configure  -prefix /usr/local/Qt5.6   -opensource   -release   -confirm-license   -xplatform linux-arm-gnueabi-g++   -shared   -qt-zlib   -no-gif   -qt-libjpeg   -no-nis   -no-opengl  -no-iconv -no-cups   -no-glib   -no-dbus   -no-rpath   -no-sse2 -no-sse3 -no-ssse3 -no-sse4.1 -no-sse4.2   -no-avx    -no-openssl   -nomake tools   -qreal float   -qt-libpng   -tslib   -nomake examples   -I /usr/local/tslib/include   -L /usr/local/tslib/lib

編譯和安裝:

1 make -j4
2 make install

修改下面這個檔案為截圖的內容

1  vim /usr/lib/x86_64-linux-gnu/qt-default/qtchooser/default.conf

將生成的/usr/local/Qt5.6 移植到開發板的檔案系統

1 cp /usr/local/Qt5.6/ /work/nfs_root/qt/fs_mini_install/usr/local/ -raf

開發板/etc/profile新增如下內容:

 1 export QTEDIR=/usr/local/Qt5.6
 2 export LD_LIBRARY_PATH=/usr/local/Qt5.6/lib:$LD_LIBRARY_PATH
 3 export QT_QPA_GENERIC_PLUGINS=tslib
 4 export QT_QPA_FONTDIR=$QTEDIR/lib/fonts 
 5 export QT_QPA_PLATFORM_PLUGIN_PATH=$QTEDIR/plugins 
 6 export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0:size=480x272:mmSize=480x272:offset=0x0:tty=/dev/tty1
 7 export QT_QPA_FB_TSLIB=1
 8 
 9 export T_ROOT=/usr/local/tslib
10 
11 export LD_LIBRARY_PATH=/usr/local/tslib/lib:$LD_LIBRARY_PATH

六、安裝QTCreator開發工具

下載連結:http://download.qt.io/archive/qt/5.10/5.10.0/

安裝:

1  sudo chmod a+x qt-opensource-linux-x64-5.10.0.run
2 ./qt-opensource-linux-x64-5.10.0.run

安裝的方法非常簡單記得在一路next選擇預設的即可,記得在選擇元件的時候兩個都勾上,把工具全部都安裝上去把。

 設定QT的工程可以在arm開發上執行,自己新建一個工具,之後根據截圖的箭頭設定:

 交叉工具鏈的位置根據自己的目錄進行調整

之後編譯自己的專案,把程式推送到板子: