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 └── usr7 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/rcS4 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開發上執行,自己新建一個工具,之後根據截圖的箭頭設定:
交叉工具鏈的位置根據自己的目錄進行調整
之後編譯自己的專案,把程式推送到板子: