linux系统下QTcreator SDK安装和嵌入式设备QT移植详细步骤
2017-07-20 10:14
351 查看
一linux系统下安装qt我的版本为ubuntu kylin1704
下载安装包官网安装包
安装
二QT移植到嵌入式设备
向下位机移植QT
a获取源码编译
b生成的库拷贝到根文件系统
c获取触摸屏的设备文件方法
d添加QT运行时所需的环境变量
e下位机测试QT移植的成果
问题总结
开源应用软件操作三步骤
编译QT源码到底获取了什么东西呢
optrootfsetcprofile配置文件的执行流程
运行QT测试程序helloworld提示各种动态库找不着
或者从我网盘下载:网盘密码:mf6f
2.sudo ./qt-opensource-linux-x64-5.9.1.run 安装即可
获取配置QT源码的脚本:网盘密码:iv9p
mkdir /opt/project/qt_source
cp xxx/qtbase-opensource-src-5.4.1.tar.xz /opt/project/qt_source
cd /opt/project/qt_source
tar -xvf qtbase-opensource-src-5.4.1.tar.xz
cd qtbase-opensource-src-5.4.1
cp xxx/build.sh qtbase-opensource-src-5.4.1
vim mkspecs/linux-arm-gnueabi-g++/qmake.conf
将:arm-linux-gnueabi-修改为arm-cortex_a9-linux-gnueabi-
保存退出
./build.sh //./configure…,生成Makefile
make -j4 //编译
make install -j4 //安装
ls /opt/project/qt/ //查看编译生成的成果
bin lib plugins include doc
file /opt/project/qt/bin/qmake //查看qmake的属性
/opt/rootfs为最终制作成或者nfs挂接的文件系统
mkdir /opt/rootfs/home/qt/
切记:不能拷贝到/opt/rootfs/lib(只存放标准的系统库)
cp /opt/project/qt/lib /opt/rootfs/home/qt/ -frd
cp /opt/project/qt/plugins /opt/rootfs/home/qt -frd
cat /dev/input/event0 //执行完毕,用手点击触摸屏
如果有打印信息,说明触摸屏的设备文件就是/dev/input/event0
如果点击触摸屏没有反应,接着测试下一个设备文件:
cat /dev/input/event1 //操作步骤同上
直到找到对应的触摸屏的设备文件
提示:注意uboot中bootargs中的lcd=…. tp=….
export QTDIR=/home/qt
export PATH=QTDIR:PATH
#明确,以下环境变量都是给QT源码使用
#此环境变量用来指示图片的处理库所在的路径
export QT_QPA_PLATFORM_PLUGIN_PATH=/home/qt/plugins
#此环境变量用来指示将来QT运行时操作的LCD显示屏的设备文件
export QT_QPA_PLATFORM=linuxfb:tty=/dev/fb0
#此环境变量用来指示QT运行时所需的字体库
export QT_QPA_FONTDIR=QTDIR/lib/fontsexportsetQTQWSFONTDIR=QTDIR/lib/fonts/
#此环境变量用来指示将来QT在和用户进行交互时对应的
触摸屏的设备文件,触摸屏的设备文件通过hexdump来测试
export TSDEVICE=/dev/input/event0
export QT_QPA_GENERIC_PLUGINS=evdevtouch:TSDEVICEexportQWSMOUSEPROTO=evdevtouch:TSDEVICE
#用来指示将来使用的LCD显示屏的设备文件
export set QWS_DISPLAY=LinuxFb:/dev/fb0
#用来指示LCD显示屏的分辨率
export set QWS_SIZE=1024x600
export set QWS_DISPLAY=”LinuxFb:mmWidth300:mmHeight400:0”
保存退出
创建一个helloworld工程,然后交叉编译测试:
注意:工程名一般就是源码所在的目录名
编译源码生成的二进制文件名和工程名一样!
切记切记:交叉编译自己的QT源码,不能这么做:
cp helloworld /opt/project/
cd /opt/project/helloworld //进入自己的QT源码
qmake -project //生成一个工程文件helloworld.pro
qmake //根据工程helloworld.pro生成Makefile
vim Makefile //观察CXX=g++
make //根据Makefile进行编译
file helloworld //查看属性,一定是针对于X86架构
同样也不能这么干:
利用qtcreator的绿色的按钮直接编译!此编译方式
同样生成X86架构的二进制文件!
所以qtcreator仅仅目前用来便于编辑代码!但不能交叉编译!
只能这么干:一定要使用交叉编译QT源码生成的qmake
cd /opt/project/helloworld
/opt/project/qt/bin/qmake -project //生成工程文件helloworld.pro
vim helloworld.pro 添加widgets控件的支持
QT += widgets
保存退出
执行:/opt/project/qt/bin/qmake //根据工程文件helloworld.pro生成的Makeifle
vim Makefile //观察CXX=arm-cortex_a9-linux-gnueabi-g++
make
//创建自己的QT程序在根文件系统rootfs中的存放目录
mkdir /opt/rootfs/home/appbin/
cp helloworld /opt/rootfs/home/appbin
开发板测试:
cd /home/appbin/
./helloworld //观察自己的QT程序是否能够启动
//如果有JPG图片,看能否正常显示
//如果有中文,看能够正常显示
此时此刻,如果QT界面有中文,此时是无法显示中文字体:
1.将原先QT中的字体库全部删除
rm /opt/rootfs/home/qt/lib/fonts/* -fr
2.从网盘密码:mgpdftp://project/qt/下载文泉驿字体库wqy-zenhei.ttc
cp wqy-zenhei.ttc /opt/rootfs/home/qt/lib/fonts/
然后再次运行QT程序,即可显示中文字体!
最后:观看QT.avi和QT2.avi视频尝试给QT界面添加背景图片和多级界面操作
//利用automake工具对源码进行操作生成configure配置程序
“…”:用来指定编译选项
-prefix /opt/project/qt //-prefix选项用来
指定编译安装目录(将来编译QT源码生成的目标文件的存放目录)
将来只需到/opt/project/qt目录下就可以看到
编译QT源码生成的成果
选项可以通过执行:./configure –help来获取
例如:-qt-libjpeg:表示让QT支持jpg格式的图片
make //编译
make install //将编译QT生成的内容放到/opt/project/qt目录下
ls /opt/project/qt/
bin lib plugins include doc
bin:编译QT源码生成工具,例如qmake,uic,moc等
这些工具将来用于交叉编译自己的QT程序使用
注意:这些工具都是运行在上位机
lib:编译QT源码生成的各种动态库
其实就是类似QPushButton的类进行了交叉编译
生成了对应的动态库,将来自己的应用程序可以
访问这些动态库,这些动态库运行在下位机
plugins:同lib一样,生成了各种动态库,主要是处理图片的动态库
include:头文件,在上位机编译QT程序时使用
doc:说明文档
系统启动流程:
上电->uboot->kernel->rootfs->/sbin/init
->创建子进程执行etc/init.d/rcS,init父进程
此时等待,rcS执行完毕->init再次创建一个子进程来执行
etc/profile脚本文件,一般此文件用于
设置各种全局的环境变量,init父进程继续等待,执行完毕
->init父进程最后创建子进程用来执行/bin/sh->用户输入命令
解决办法:到交叉编译器中找到标准的系统库拷贝到
根文件系统/opt/rootfs/lib目录下
另一类是缺少QT库:提示libQtGui.so找不着
解决办法:明确这些动态库都已经拷贝到
根文件系统/opt/rootfs/home/qt/lib下
只需在根文件系统中添加环境变量即可:
上位机执行:
vim /opt/rootfs/etc/profile 文件最后添加:
export LD_LIBRARY_PATH=/home/qt/lib:$LD_LIBRARY_PATH
保存退出
重启下位机
切记切记:
标准的系统库一定放在/opt/rootfs/lib下
自己制作的库和移植的库一律不允许放到/opt/rootfs/lib下
要单独存放,当然了还要注意设置添加LD_LIBRARY_PATH
下载安装包官网安装包
安装
二QT移植到嵌入式设备
向下位机移植QT
a获取源码编译
b生成的库拷贝到根文件系统
c获取触摸屏的设备文件方法
d添加QT运行时所需的环境变量
e下位机测试QT移植的成果
问题总结
开源应用软件操作三步骤
编译QT源码到底获取了什么东西呢
optrootfsetcprofile配置文件的执行流程
运行QT测试程序helloworld提示各种动态库找不着
一:linux系统下安装qt(我的版本为ubuntu kylin17.04)
1.下载安装包(官网安装包)
下载这个:Qt 5.9.1 for Linux 64-bit (1.0 GB) (info)或者从我网盘下载:网盘密码:mf6f
2.安装
1.sudo chmod 0777 qt-opensource-linux-x64-5.9.1.run(修改安装包权限)2.sudo ./qt-opensource-linux-x64-5.9.1.run 安装即可
二:QT移植到嵌入式设备
1.向下位机移植QT
a.获取源码,编译
获取要移植的QT源码:网盘密码:juu4获取配置QT源码的脚本:网盘密码:iv9p
mkdir /opt/project/qt_source
cp xxx/qtbase-opensource-src-5.4.1.tar.xz /opt/project/qt_source
cd /opt/project/qt_source
tar -xvf qtbase-opensource-src-5.4.1.tar.xz
cd qtbase-opensource-src-5.4.1
cp xxx/build.sh qtbase-opensource-src-5.4.1
vim mkspecs/linux-arm-gnueabi-g++/qmake.conf
将:arm-linux-gnueabi-修改为arm-cortex_a9-linux-gnueabi-
保存退出
./build.sh //./configure…,生成Makefile
make -j4 //编译
make install -j4 //安装
ls /opt/project/qt/ //查看编译生成的成果
bin lib plugins include doc
file /opt/project/qt/bin/qmake //查看qmake的属性
b.生成的库拷贝到根文件系统
只拷贝将来QT运行时所需的动态库到根文件系统中/opt/rootfs为最终制作成或者nfs挂接的文件系统
mkdir /opt/rootfs/home/qt/
切记:不能拷贝到/opt/rootfs/lib(只存放标准的系统库)
cp /opt/project/qt/lib /opt/rootfs/home/qt/ -frd
cp /opt/project/qt/plugins /opt/rootfs/home/qt -frd
c.获取触摸屏的设备文件方法:
在下位机执行以下命令:cat /dev/input/event0 //执行完毕,用手点击触摸屏
如果有打印信息,说明触摸屏的设备文件就是/dev/input/event0
如果点击触摸屏没有反应,接着测试下一个设备文件:
cat /dev/input/event1 //操作步骤同上
直到找到对应的触摸屏的设备文件
提示:注意uboot中bootargs中的lcd=…. tp=….
d.添加QT运行时所需的环境变量
vim /opt/rootfs/etc/profile 添加如下环境变量export QTDIR=/home/qt
export PATH=QTDIR:PATH
#明确,以下环境变量都是给QT源码使用
#此环境变量用来指示图片的处理库所在的路径
export QT_QPA_PLATFORM_PLUGIN_PATH=/home/qt/plugins
#此环境变量用来指示将来QT运行时操作的LCD显示屏的设备文件
export QT_QPA_PLATFORM=linuxfb:tty=/dev/fb0
#此环境变量用来指示QT运行时所需的字体库
export QT_QPA_FONTDIR=QTDIR/lib/fontsexportsetQTQWSFONTDIR=QTDIR/lib/fonts/
#此环境变量用来指示将来QT在和用户进行交互时对应的
触摸屏的设备文件,触摸屏的设备文件通过hexdump来测试
export TSDEVICE=/dev/input/event0
export QT_QPA_GENERIC_PLUGINS=evdevtouch:TSDEVICEexportQWSMOUSEPROTO=evdevtouch:TSDEVICE
#用来指示将来使用的LCD显示屏的设备文件
export set QWS_DISPLAY=LinuxFb:/dev/fb0
#用来指示LCD显示屏的分辨率
export set QWS_SIZE=1024x600
export set QWS_DISPLAY=”LinuxFb:mmWidth300:mmHeight400:0”
保存退出
e.下位机测试QT移植的成果:
随意找一个QT程序helloworld,获取用qtcreator创建一个helloworld工程,然后交叉编译测试:
注意:工程名一般就是源码所在的目录名
编译源码生成的二进制文件名和工程名一样!
切记切记:交叉编译自己的QT源码,不能这么做:
cp helloworld /opt/project/
cd /opt/project/helloworld //进入自己的QT源码
qmake -project //生成一个工程文件helloworld.pro
qmake //根据工程helloworld.pro生成Makefile
vim Makefile //观察CXX=g++
make //根据Makefile进行编译
file helloworld //查看属性,一定是针对于X86架构
同样也不能这么干:
利用qtcreator的绿色的按钮直接编译!此编译方式
同样生成X86架构的二进制文件!
所以qtcreator仅仅目前用来便于编辑代码!但不能交叉编译!
只能这么干:一定要使用交叉编译QT源码生成的qmake
cd /opt/project/helloworld
/opt/project/qt/bin/qmake -project //生成工程文件helloworld.pro
vim helloworld.pro 添加widgets控件的支持
QT += widgets
保存退出
执行:/opt/project/qt/bin/qmake //根据工程文件helloworld.pro生成的Makeifle
vim Makefile //观察CXX=arm-cortex_a9-linux-gnueabi-g++
make
//创建自己的QT程序在根文件系统rootfs中的存放目录
mkdir /opt/rootfs/home/appbin/
cp helloworld /opt/rootfs/home/appbin
开发板测试:
cd /home/appbin/
./helloworld //观察自己的QT程序是否能够启动
//如果有JPG图片,看能否正常显示
//如果有中文,看能够正常显示
此时此刻,如果QT界面有中文,此时是无法显示中文字体:
1.将原先QT中的字体库全部删除
rm /opt/rootfs/home/qt/lib/fonts/* -fr
2.从网盘密码:mgpdftp://project/qt/下载文泉驿字体库wqy-zenhei.ttc
cp wqy-zenhei.ttc /opt/rootfs/home/qt/lib/fonts/
然后再次运行QT程序,即可显示中文字体!
最后:观看QT.avi和QT2.avi视频尝试给QT界面添加背景图片和多级界面操作
问题总结:
1.开源应用软件操作三步骤
./configure … //目的就是为了自动生成Makefile//利用automake工具对源码进行操作生成configure配置程序
“…”:用来指定编译选项
-prefix /opt/project/qt //-prefix选项用来
指定编译安装目录(将来编译QT源码生成的目标文件的存放目录)
将来只需到/opt/project/qt目录下就可以看到
编译QT源码生成的成果
选项可以通过执行:./configure –help来获取
例如:-qt-libjpeg:表示让QT支持jpg格式的图片
make //编译
make install //将编译QT生成的内容放到/opt/project/qt目录下
2.编译QT源码,到底获取了什么东西呢?
编译QT源码生成的内容如下:ls /opt/project/qt/
bin lib plugins include doc
bin:编译QT源码生成工具,例如qmake,uic,moc等
这些工具将来用于交叉编译自己的QT程序使用
注意:这些工具都是运行在上位机
lib:编译QT源码生成的各种动态库
其实就是类似QPushButton的类进行了交叉编译
生成了对应的动态库,将来自己的应用程序可以
访问这些动态库,这些动态库运行在下位机
plugins:同lib一样,生成了各种动态库,主要是处理图片的动态库
include:头文件,在上位机编译QT程序时使用
doc:说明文档
3./opt/rootfs/etc/profile配置文件的执行流程
profile:本质就是脚本程序系统启动流程:
上电->uboot->kernel->rootfs->/sbin/init
->创建子进程执行etc/init.d/rcS,init父进程
此时等待,rcS执行完毕->init再次创建一个子进程来执行
etc/profile脚本文件,一般此文件用于
设置各种全局的环境变量,init父进程继续等待,执行完毕
->init父进程最后创建子进程用来执行/bin/sh->用户输入命令
4.运行QT测试程序helloworld提示各种动态库找不着
一类是缺少标准的系统库:类似libpthread.so找不着解决办法:到交叉编译器中找到标准的系统库拷贝到
根文件系统/opt/rootfs/lib目录下
另一类是缺少QT库:提示libQtGui.so找不着
解决办法:明确这些动态库都已经拷贝到
根文件系统/opt/rootfs/home/qt/lib下
只需在根文件系统中添加环境变量即可:
上位机执行:
vim /opt/rootfs/etc/profile 文件最后添加:
export LD_LIBRARY_PATH=/home/qt/lib:$LD_LIBRARY_PATH
保存退出
重启下位机
切记切记:
标准的系统库一定放在/opt/rootfs/lib下
自己制作的库和移植的库一律不允许放到/opt/rootfs/lib下
要单独存放,当然了还要注意设置添加LD_LIBRARY_PATH
相关文章推荐
- Ubuntu 12.04.5(64bit) valgrind的安装、缺少libc6-dbg的解决办法以及移植到arm-Linux嵌入式设备的步骤
- Qt4.8.6详细安装步骤(使用了i686-4.8.2-release-posix-dwarf-rt_v3-rev3,手动设置gcc和gdb)非常清楚 good
- Linux系统下ZooKeeper注册中心安装详细步骤(基于单节点)
- 在centos 6.2,python2.7 下安装QT 4.8.3,pyqt 4.9.5 详细步骤
- ARM QT移植详细步骤教程(QT4.8.5+gcc-linaro-arm-linux-gnueabihf)
- ARM QT移植详细步骤教程--转载
- 嵌入式ARM版本的Qt编译安装和移植过程
- 【Linux开发】【Qt开发】ARM QT移植详细步骤教程
- Qt4.8.6详细安装步骤
- QT 4.6.3 移植详细步骤(适合初学者)
- 嵌入式ARM版本的Qt编译安装和移植过程
- QT 4.6.3 移植详细步骤(适合初学者)
- 使用ARM开发详细步骤/关于QT/E安装,编译,以及执行
- 在centos 6.2,python2.7 下安装QT 4.8.3,pyqt 4.9.5 详细步骤
- 嵌入式arm210开发板移植MP3的详细步骤
- 【原创】车载实时路况信息接收终端移植于Smart210开发板---步骤2之win下QT的安装和配置
- Qt4.8.6详细安装步骤
- Linux安装Qt详细步骤 亲测总结
- 【原创】车载实时路况信息接收终端移植于Smart210开发板---步骤2之win下QT的安装和配置
- 嵌入式设备使用的web服务器 ——thttpd移植 (非常详细,仔细品味一定会有收获)