平台: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
编译:
1
创建安装的目录:
1
安装:
1
查看是否安装成功:
1 zhuang@zhuang:/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
从交叉工具链安装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
在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
在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
在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
将fs_mini_install目录制作成文件系统镜像命令:
1 mkfs.jffs2 -n -s 2048
三、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
安装:
1 cd tmp
2
修改tslib:
1 修改 /etc/ts.conf第1行(去掉#号和第一个空格):
2 # module_raw input
3 改为:
4
测试:
设置环境变量
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
运行校准测试例子:
1 cd /usr/local/tslib/bin
2
五、移植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
配置命令:
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
编译和安装:
1 make -j4
2
修改下面这个文件为截图的内容
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
六、安装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开发上运行,自己新建一个工具,之后根据截图的箭头设置:
交叉工具链的位置根据自己的目录进行调整
之后编译自己的项目,把程序推送到板子: