移植qt5到arm开发板,编译make出现问题

蜗牛哦 2015-12-22 03:47:36


Qt5与Qt4对比有很大的改变,其最大的特性在于模块化,并且很明显的是不再见到Qt4用到的qws,Qt5新增了QPA系统,基于QPA使得Qt5移植到一个新平台非常简单而又具有极强的底层扩展能力;同时,C++11 也获得全面支持,使用 C++11 新特性更为方便。下面讲述将Qt5.4.1移植到MYD-AM335X的步骤:

1、编译并安装tslib1.4。这部分按照“MYD-AM335X Linux 3.2.0 用户手册”第1.10.2章节的步骤即可,最终将安装到/usr/local/tslib中。


2、到https://download.qt.io/archive/qt/5.4/5.4.1/single/下载源码包 qt-everywhere-opensource-src-5.4.1.tar.gz

3、解压:
1
2
$ tar xzf qt-everywhere-opensource-src-5.4.1.tar.gz
$ cd qt-everywhere-opensource-src-5.4.1/


4、指定所用平台的arm架构以及交叉编译器:
1
$ vi qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf

改成以下内容,实际应需要根据自己的开发环境作出相应改变:

#
# qmake configuration for building with arm-linux-gnueabi-g++
#

MAKEFILE_GENERATOR = UNIX
CONFIG += incremental
QMAKE_INCREMENTAL_STYLE = sublib

QT_QPA_DEFAULT_PLATFORM = linuxfb
QMAKE_CFLAGS_RELEASE += -O2 -march=armv7-a
QMAKE_CXXFLAGS_RELEASE += -O2 -march=armv7-a

include(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)

QMAKE_INCDIR += /usr/local/tslib/include
QMAKE_LIBDIR += /usr/local/tslib/lib

# modifications to g++.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

# modifications to linux.conf
QMAKE_AR = arm-linux-gnueabihf-ar cqs
QMAKE_OBJCOPY = arm-linux-gnueabihf-objcopy
QMAKE_NM = arm-linux-gnueabihf-nm -P
QMAKE_STRIP = arm-linux-gnueabihf-strip
load(qt_config)


5、根据自己的实际需求配置Qt:

$ ./configure \
-prefix /usr/local/qt5.4.1 \
-confirm-license \
-opensource \
-release \
-make libs \
-xplatform linux-arm-gnueabi-g++ \
-optimized-qmake \
-pch \
-qt-sql-sqlite \
-qt-libjpeg \
-qt-libpng \
-qt-zlib \
-tslib \
-no-opengl \
-no-sse2 \
-no-openssl \
-no-nis \
-no-cups \
-no-glib \
-no-dbus \
-no-xcb \
-no-xcursor -no-xfixes -no-xrandr -no-xrender \
-no-separate-debug-info \
-make examples -nomake tools -nomake tests -no-iconv


6、编译安装:
1
2
$ make
$ sudo make install


7、移植Qt到开发板:
完成上述步骤后,qt5.4.1将被安装到/usr/local/qt5.4.1中。然后将/usr/local/中的qt5.4.1复制到开发板的/opt/目录中,将/usr/local/中的tslib复制到开发板的/usr/local/中。


8、设置开发板Qt环境变量:


1
root@MYD-AM335X:~# vi /etc/init.d/qt.sh


添加下面内容:

export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0

export TSLIB_TSDEVICE=/dev/input/event1
export TSLIB_CONFFILE=/usr/local/tslib/etc/ts.conf
export TSLIB_PLUGINDIR=/usr/local/tslib/lib/ts
export TSLIB_CALIBFILE=/etc/pointercal
export LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/tslib/lib:/opt/qt5.4.1/lib
export PATH=/bin:/sbin:/usr/bin/:/usr/sbin:/usr/local/tslib/bin

export QT_QPA_PLATFORM_PLUGIN_PATH=/opt/qt5.4.1/plugins
export QT_QPA_PLATFORM=linuxfb:tty=/dev/fb0
export QT_QPA_FONTDIR=/opt/qt5.4.1/lib/fonts
export QT_QPA_GENERIC_PLUGINS=tslib:$TSLIB_TSDEVICE


保存退出后使上面的环境变量生效:
1
root@MYD-AM335X:~# source /etc/init.d/qt.sh


9、运行一些example:

1
root@MYD-AM335x ~# /opt/qt5.4.1/examples/touch/pinchzoom/pinchzoom




1
root@MYD-AM335x ~# /opt/qt5.4.1/examples/svg/embedded/fluidlauncher/fluidlauncher



qt5.jpg (113.27 KB, 下载次数: 7)
下载附件 保存到相册
2015-5-6 14:42 上传


我们可以看到用linuxfb方式的运行的QT是没有窗体边框的,这是qt5的一个特点,似乎是其为了更好的转移到手机等移动终端。






编译出现这样的错误:
linux-arm-gnueabi-g++ -o .obj/qlogging.o global/qlogging.cpp
global/qlogging.cpp:84:26: error: execinfo.h: No such file or directory
global/qlogging.cpp: In function ‘QString qFormatLogMessage(QtMsgType, const QMessageLogContext&, const QString&)’:
global/qlogging.cpp:1151: error: ‘backtrace’ was not declared in this scope
global/qlogging.cpp:1153: error: ‘backtrace_symbols’ was not declared in this scope
make[3]: *** [.obj/qlogging.o] Error 1
make[3]: Leaving directory `/home/sean/work/cx92755/qt/qt-everywhere-opensource-src-5.4.1/qtbase/src/corelib'
make[2]: *** [sub-corelib-make_first] Error 2
make[2]: Leaving directory `/home/sean/work/cx92755/qt/qt-everywhere-opensource-src-5.4.1/qtbase/src'
make[1]: *** [sub-src-make_first] Error 2
make[1]: Leaving directory `/home/sean/work/cx92755/qt/qt-everywhere-opensource-src-5.4.1/qtbase'
make: *** [module-qtbase-make_first] Error 2

...全文
1452 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
听雨听风眠 2017-12-01
  • 打赏
  • 举报
回复
添加 -no-dbus 配置
qq_16733499 2016-04-20
  • 打赏
  • 举报
回复
楼主你好 。我也遇到了同样的问题,你这个问题解决了吗?要怎么搞
yjzl1911 2016-04-07
  • 打赏
  • 举报
回复
交叉编译工具没装好。 你确定你安装的是 arm-none-linux-gnueabi-g++ ? 注意其前缀。
mypint_skyman 2016-04-05
  • 打赏
  • 举报
回复
引用 2 楼 LWZ123999 的回复:
我的第四步就编不过, 像你上面配好:vi qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf 然后./configure -release -opensource -xplatform linux-arm-gnueabi-g++ -prefix /opt/Qt-5.4.1/armv7-a -no-c++11 -qreal float 时 提示:./configure: 3400: ./configure: arm-none-linux-gnueabi-g++: not found (我已经装了交叉编译工具了, arm-none-linux-g++ -v 测试时 交叉编译工具是好的)
我也同一出现了这句话 ./configure: arm-none-linux-gnueabi-g++: not found, 最后倒地怎么解决的?
LWZ123999 2015-12-30
  • 打赏
  • 举报
回复
我的第四步就编不过, 像你上面配好:vi qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf 然后./configure -release -opensource -xplatform linux-arm-gnueabi-g++ -prefix /opt/Qt-5.4.1/armv7-a -no-c++11 -qreal float 时 提示:./configure: 3400: ./configure: arm-none-linux-gnueabi-g++: not found (我已经装了交叉编译工具了, arm-none-linux-g++ -v 测试时 交叉编译工具是好的)
蜗牛哦 2015-12-22
  • 打赏
  • 举报
回复
自己先顶下
这个是广嵌GEC2410开发板的用户手册 目录: 第一章 GEC2410 开发板套件介绍 1.1 GEC2410 开发板外观 1.2 GEC2410 开发板硬件构成 1.3 硬件资源分配 1.4 开发套件包含的内容 1.5 操作系统支持的驱动 第二章 GEC2410 开发板使用 2.1 GEC2410 开发板快速使用入门 2.2 启动 LINUX 和 WINCE 2.3 GEC2410 的 BIOS 功能说明 2.4 非操作系统下的外围资源测试 2.5 Linux 操作系统下的外围资源测试 2.6 用 SJF2410 工具将 BIOS 烧写到 NAND FLASH 第三章 烧写和启动linux 3.1 烧写 LINUX 内核 3.2 烧写根文件系统 3.3 启动 LINUX 第四章 烧写 WINCE 和启动 WINCE 4.1 下载运行 WINCE 4.2 烧写 WINCE 4.3 自启动 WINCE 第五章 用 ARM 仿真器调试 GEC2410 第六章 嵌入式 linux 6.1 安装工具链 6.2 配置移植 linux 内核 6.3 制造根文件系统 第七章 嵌入式 GUI--Qt 开发 7.1 Qt/Embedded开发环境的安装 7.2 Qt/Embedded开发工具的安装 7.2.1 tmake 的安装 7.2.2 Qt X11 的安装 7.2.3 Qt/Embedded 安装 7.2.4 交叉编译 qtopia 7.3 Qt/Embedded应用开发实例 7.3.1 在 ARM 上的 qt/embedded应用程序实例 7.3.2 在ARM上的qt/embedded应用程序实例 第八章 嵌入式 WINCE 8.1 WINCE的安装 8.1.1 安装开发环境 8.1.2 安装目录 8.1.3 构建新的平台、编译 8.2 WINCE的 image 的运行 8.3 通过以太网烧写WINCE映象文件 8.4 在WINCE和桌面系统之间建立通讯连接 INDEX END
资源大于15MB分2次上传。 清晰度一般。加到11章 第12,13章没有。 第1章 嵌入式系统基础. 1.1 嵌入式系统简介 1.1.1 嵌入式系统定义 1.1.2 嵌入式系统与PC 1.1.3 嵌入式系统的特点 1.2 嵌入式系统的发展 1.2.1 嵌入式系统现状 1.2.2 嵌入式系统发展趋势 1.3 嵌入式操作系统与实时操作系统 1.3.1 Linux 1.3.2 uC/OS 1.3.3 Windows CE 1.3.4 VxWorks 1.3.5 Palm OS 1.3.6 QNX 1.4 嵌入式系统选型 第2章 基于ARM9处理器的硬件开发平台 2.1 ARM处理器简介 2.1.1 ARM公司简介 2.1.2 ARM微处理器核 .2.2 ARM9微处理器简介 2.2.1 与ARM7处理器的比较 2.2.2 三星S3C2410X处理器详解 2.3 FS2410开发平台 第3章 创建嵌入式系统开发环境 3.1 嵌入式Linux的开发环境 3.2 Cygwin 3.3 虚拟机 3.4 交叉编译的预备知识 3.4.1 Make命令和Makefile文件 3.4.2 binutils工具包 3.4.3 gcc编译器 3.4.4 Glibc库 3.4.5 GDB 3.5 交叉编译 3.5.1 创建编译环境 3.5.2 编译binutils 3.5.3 编译bootstrap_gcc 3.5.4 编译Glibc 3.5.5 编译完整的gcc 3.5.6 编译GDB 3.5.7 成果 3.5.8 其他交叉编译方法 3.6 通过二进制软件包创建交叉编译环境 3.7 开发套件 第4章 调试嵌入式系统程序 4.1 嵌入式系统调试方法 4.1.1 实时在线仿真 4.1.2 模拟调试 4.1.3 软件调试 4.1.4 BDM/JTAG调试 4.2 ARM仿真器 4.2.1 techorICE ARM仿真器 4.2.2 ARM仿真器工作原理 4.2.3 ARM仿真器的系统功能层次 4.2.4 使用仿真器和ADS Debugger调试ARM开发板 4.3 JTAG接口 4.3.1 JTAG引脚定义 4.3.2 通过JTAG烧写Flash 4.3.3 烧写Flash技术内幕 第5章 Bootloader 5.1 嵌入式系统的引导代码 5.1.1 初识Bootloader 5.1.2 Bootloader的启动流程 5.2 Bootloader之vivi 5.2.1 vivi简介 5.2.2 vivi的配置与编译 5.2.3 vivi代码导读 5.3 Bootloader之U-Boot 5.3.1 U-Boot代码结构分析 5.3.2 编译U-Boot代码 5.3.3 U-Boot代码导读 5.3.4 U-Boot命令 5.4 FS2410的Bootloader 第6章 Linux系统在ARM平台的移植 6.1 移植的概念 6.2 Linux内核结构 6.3 Linux-2.4内核向ARM平台的移植 6.3.1 根目录 6.3.2 arch目录 6.3.3 arch/arm/boot目录 6.3.4 arch/arm/def-configs目录 6.3.5 arch/arm/kernel目录 6.3.6 arch/arm/mm目录 6.3.7 arch/arm/mach-s3c2410目录 6.4 Linux-2.6内核向ARM平台的移植 6.4.1 定义平台和编译器 6.4.2 arch/arm/mach-s3c2410/devs.c 6.4.3 arch/arm/mach-s3c2410/mach-fs2410.c 6.4.4 串口输出 6.5 编译Linux内核 6.5.1 代码成熟等级选项 6.5.2 通用的一些选项 6.5.3 和模块相关的选项 6.5.4 和块相关的选项 6.5.5 和系统类型相关的选项 6.5.6 和总线相关的选项 6.5.7 和内核特性相关的选项 6.5.8 和系统启动相关的选项 6.5.9 和浮点运算相关的选项 6.5.10 用户空间使用的二进制文件格式的选项 6.5.11 和电源管理相关的选项 6.5.12 和网络协议相关的选项 6.5.13 和设备驱动程序相关的选项 6.5.14 和文件系统相关的选项 6.5.15 和程序性能分析相关的选项 6.5.16 和内核调试相关的选项 6.5.17 和安全相关的选项 6.5.18 和加密算法相关的选项 6.5.19 库选项 6.5.20 保存内核配置 第7章 Linux设备驱动程序开发 7.1 设备驱动概述 7.1.1 设备驱动和文件系统的关系 7.1.2 设备类型分类 7.1.3 内核空间和用户空间.. 7.2 设备驱动基础 7.2.1 设备驱动中关键数据结构 7.2.2 字符设备驱动开发 第8章 网络设备驱动程序开发 8.1 网络设备驱动程序简介 8.1.1 device数据结构 8.1.2 sk_buff数据结构 8.1.3 内核的驱动程序接口 8.2 以太网控制器CS8900A 8.2.1 特性 8.2.2 工作原理 8.2.3 电路连接 8.2.4 引脚 8.2.5 操作模式 8.3 网络设备驱动程序实例 8.3.1 初始化函数 8.3.2 打开函数 8.3.3 关闭函数 8.3.4 发送函数 8.3.5 接收函数 8.3.6 中断处理函数 第9章 USB驱动程序开发 9.1 USB驱动程序简介 9.1.1 USB背景知识 9.1.2 Linux内核对USB规范的支持 9.1.3 OHCI简介 9.2 Linux下USB系统文件结点 9.3 USB主机驱动结构 9.3.1 USB数据传输时序 9.3.2 USB设备连接/断开时序 9.4 主要数据结构及接口函数 9.4.1 数据传输管道 9.4.2 统一的USB数据传输块 9.4.3 USBD数据描述 9.4.4 USBD与HCD驱动程序接口 9.4.5 USBD层的设备管理 9.4.6 设备类驱动与USBD接口 9.5 USBD文件系统接口 9.5.1 设备驱动程序访问 9.5.2 设备拓扑访问 9.5.3 设备信息访问 9.6 设备类驱动与文件系统接口 9.7 USB HUB驱动程序 9.7.1 HUB驱动初始化 9.7.2 HUB Probe相关函数 9.8 OHCI HCD实现 9.8.1 OHCI驱动初始化 9.8.2 与USBD连接 9.8.3 OHCI根HUB 9.9 扫描仪设备驱动程序 9.9.1 USBD接口 9.9.2 文件系统接口 9.10 USB主机驱动在S3C2410X平台的实现 9.10.1 USB主机控制器简介 9.10.2 驱动程序的移植 第10章 图形用户接口 10.1 嵌入式系统中的GUI简介 10.1.1 MicroWindows 10.1.2 MiniGUI 10.1.3 Qt/Embedded 10.2 MiniGUI编程 10.2.1 MiniGUI移植 10.2.2 MiniGUI编程 10.3 初识Qt/Embedded 10.3.1 Qt介绍 10.3.2 系统要求 10.3.3 Qt的架构 10.4 Qt/Embedded嵌入式图形开发基础 10.4.1 建立Qt/Embedded 开发环境 10.4.2 认识Qt/Embedded开发环境 10.4.3 窗体 10.4.4 对话框 10.4.5 外形与感觉 10.4.6 国际化 10.5 Qt/Embedded实战演练 10.5.1 安装Qt/Embedded工具开发包 10.5.2 交叉编译Qt/Embedded库 10.5.3 Hello,World 10.5.4 发布Qt/Embedded程序到目标板 10.5.5 添加一个Qt/Embedded应用到QPE 第11章 Java虚拟机的移植 11.1 Java虚拟机概述 11.1.1 Java虚拟机的概念 11.1.2 J2ME 11.1.3 KVM 11.2 Java虚拟机的移植 11.2.1 获得源码 11.2.2 编译环境的建立 11.2.3 JDK的安装 11.2.4 KVM的移植编译 11.2.5 KVM的测试 11.3 其他可选的虚拟机 11.4 性能优化
郭天祥ARM9视频教程(第13讲和第20讲均可观看) ARM9视频教程清单: 第一部分 嵌入式系统开发流程概述 第一讲 嵌入式基础知识 1. 嵌入式的定义、特点、应用 2. 嵌入式硬件结构 3. 嵌入式软件结构 第二讲 如何学习嵌入式 1. 嵌入式系统开发流程 2. 视频内容介绍 3. 学习嵌入式的方法 4. 使用TX-2440A开发项目 第二部分 开发板功能演示 第三讲 TX-2440A开发板外围硬件介绍 1. 核心板资源介绍 2. 底板资源介绍 3. 外围模块介绍 第四讲 TX-2440A开发板功能演示 1. 整板测试 2. 终端下硬件测试 3. 应用程序演示 4. QT图形界面演示 第三部分 嵌入式开发平台搭建 第五讲 Linux操作系统的安装 1. Linux简介,内核,桌面环境介绍 2. 安装虚拟机和Linux操作系统 3. 配置smb,nfs服务器 第六讲 Linux操作系统全面分析 1. Linux常用命令 2. vi编辑器 3. gcc编译器 4. make工具使用,makefile编写 5. shell编程 Linux系统编程专题 第七讲 建立交叉编译环境 1. 编译原理,gcc的使用 2. 交叉编译原理 3. 交叉编译工具安装使用 4. 交叉编译实例分析 第八讲 Windows平台工具使用 1. SecureCRT的安装使用 2. Notepad++的使用 3. ADS集成开发环境的安装 4. HJTAG工具的使用 5. USB驱动的安装 6. 使用USB下载程序 第四部分 嵌入式硬件 第九讲 ARM9体系结构,S3C2440处理器 1. ARM处理器介绍 2. ARM编程模型和异常中断 3. S3C2440系统结构及片上资源介绍 4. S3C2440时钟电源管理 5. S3C2440的中断体系结构 第十讲 S3C2440主存储器配置 1. S3C2440存储控制器特性 2. SDRAM原理分析 3. NandFlash原理分析 第十一讲 ADS工具的使用,建立硬件调试环境 1. 建立ADS工程 2. 系统代码和NandFlash代码分析 3. 使用HJtag和Jlink调试硬件 4. GPIO原理分析,编写LED驱动 第十二讲 TX-2440A开发板硬件原理分析 1. 按键与外部中断 2. RTC与定时器 3. ADC与触摸屏 4. 串口与IrDA 5. SPI与CAN总线 6. LCD与Camera LCD专题 第五部分 嵌入式系统移植之bootloader 第十三讲 Bootloader原理和vivi的移植 1. bootloader概述 2. vivi的启动过程分析 3. vivi的配置移植 4. vivi命令详解 第十四讲 uboot原理分析及移植 1. uboot简介 2. uboot源码目录结构 3. uboot运行代码分析 4. uboot在TX2440A上移植 5. uboot常用命令讲解 uboot使用专题 第六部分 嵌入式系统移植之linux内核 第十五讲 Linux内核分析和配置 1. 内核源码目录结构分析 2. Makefile,Kconfig文件分析 3. Linux启动过程分析 4. 配置、编译内核 第十六讲 向内核中加入驱动 1. 支持NAND和yaffs2,挂载文件系统 2. 基本外围设备的配置(LCD、触摸屏、网卡、声卡,SD卡、USB设备、摄像头) 3. 向内核中加入驱动模块(LED、按键、蜂鸣器、AD、DS18B20) 第七部分 嵌入式系统移植之构建根文件系统 第十七讲 用busybox制作根文件系统 1. 嵌入式文件系统介绍 2. Linux目录结构详解 3. 配置,编译busybox 4. 完善根文件系统 5. 制作yaffs镜像 第十八讲 应用程序的移植 1. NFS文件系统的挂载 2. 移植嵌入式web服务器Boa 3. 移植madplay音乐播放器 第八部分 嵌入式驱动开发 第十九讲 Linux字符设备驱动 1. 嵌入式设备驱动概述 2. Linux字符设备驱动结构 3. 字符设备驱动程序设计实例 4. 中断和同步的处理 第二十讲 其他类型设备驱动 1. Linux块设备驱动框架 2. MTD设备驱动分析 3. LCD驱动,音频驱动简介 4. 网络设备驱动分析 第九部分 QT图形界面开发 第二十一讲 QT及Qtopia介绍 1. 嵌入式GUI简介 2. Qt概述,Qt/X11的安装(Qt-4.5.3) 3. Qtopia概述 第二十二讲 Qt在ARM平台的移植 1. 移植tslib(触摸屏校正) 2. Qt/E-4.5.3在ARM移植 3. Qtopia-4.2.4手机平台在ARM移植 第二十三讲 Qt应用程序的开发 1. Qt编程
目录 第1章 Linux快速入门 1 1.1 嵌入式Linux基础 1 1.1.1 Linux发展概述 1 1.1.2 Linux作为嵌入式操作系统的优势 2 1.1.3 Linux发行版本 3 1.1.4 如何学习Linux 4 1.2 Linux安装 5 1.2.1 基础概念 5 1.2.2 硬件需求 7 1.2.3 安装准备 7 1.2.4 安装过程 8 1.3 Linux文件及文件系统 11 1.3.1 文件类型及文件属性 11 1.3.2 文件系统类型介绍 13 1.3.3 Linux目录结构 14 1.4 实验内容——安装Linux操作系统 17 本章小结 17 思考与练习 18 第2章 Linux基础命令 19 2.1 Linux常用操作命令 19 2.1.1 用户系统相关命令 20 2.1.2 文件目录相关命令 27 2.1.3 压缩打包相关命令 38 2.1.4 比较合并文件相关命令 40 2.1.5 网络相关命令 45 2.2 Linux启动过程详解 50 2.2.1 概述 51 2.2.2 内核引导阶段 51 2.2.3 init阶段 52 2.3 Linux系统服务 54 2.3.1 独立运行的服务 55 2.3.2 xinetd设定的服务 56 2.3.3 设定服务命令常用方法 56 2.4 实验内容 57 2.4.1 在Linux下解压常见软件 57 2.4.2 定制Linux系统服务 58 本章小结 60 思考与练习 60 第3章 Linux下的C编程基础 61 3.1 Linux下C语言编程概述 61 3.1.1 C语言简单回顾 61 3.1.2 Linux下C语言编程环境概述 62 3.2 进入Vi 63 3.2.1 Vi的模式 63 3.2.2 Vi的基本流程 63 3.2.3 Vi的各模式功能键 65 3.3 初探Emacs 66 3.3.1 Emacs的基本操作 67 3.3.2 Emacs的编译概述 70 3.4 Gcc编译器 71 3.4.1 Gcc编译流程解析 71 3.4.2 Gcc编译选项分析 74 3.5 Gdb调试器 77 3.5.1 Gdb使用流程 78 3.5.2 Gdb基本命令 81 3.6 Make工程管理器 86 3.6.1 Makefile基本结构 86 3.6.2 Makefile变量 87 3.6.3 Makefile规则 90 3.6.4 Make管理器的使用 91 3.7 使用autotools 92 3.7.1 autotools使用流程 92 3.7.2 使用autotools所生成的Makefile 96 3.8 实验内容 98 3.8.1 Vi使用练习 98 3.8.2 用Gdb调试有问题的程序 99 3.8.3 编写包含多文件的Makefile 101 3.8.4 使用autotools生成包含多文件的Makefile 103 本章小结 105 思考与练习 105 第4章 嵌入式系统基础 106 4.1 嵌入式系统概述 106 4.1.1 嵌入式系统简介 106 4.1.2 嵌入式系统发展历史 107 4.1.3 嵌入式系统的特点 108 4.1.4 嵌入式系统的体系结构 108 4.1.5 几种主流嵌入式操作系统分析 109 4.2 ARM处理器硬件开发平台 111 4.2.1 ARM处理器简介 111 4.2.2 ARM体系结构简介 113 4.2.3 ARM9体系结构 113 4.2.4 S3C2410处理器详解 116 4.3 嵌入式软件开发流程 121 4.3.1 嵌入式系统开发概述 121 4.3.2 嵌入式软件开发概述 122 4.4 实验内容——使用JTAG烧写NAND Flash 128 本章小结 131 思考与练习 132 第5章 嵌入式Linux开发环境的搭建 133 5.1 嵌入式开发环境的搭建 133 5.1.1 嵌入式交叉编译环境的搭建 133 5.1.2 超级终端和Minicom配置及使用 135 5.1.3 下载映像到开发板 142 5.1.4 编译嵌入式Linux内核 145 5.1.5 Linux内核目录结构 149 5.1.6 制作文件系统 149 5.2 U-Boot移植 153 5.2.1 Bootloader介绍 153 5.2.2 U-Boot概述 155 5.2.3 U-Boot源码导读 156 5.2.4 U-Boot移植主要步骤 163 5.2.5 U-Boot常见命令 164 5.3 实验内容——移植Linux内核 164 本章小结 165 思考与练习 165 第6章 文件I/O编程 166 6.1 Linux系统调用及用户编程接口(API) 166 6.1.1 系统调用 166 6.1.2 用户编程接口(API) 167 6.1.3 系统命令 167 6.2 Linux中文件及文件描述符概述 168 6.3 不带缓存的文件I/O操作 168 6.3.1 open和close 168 6.3.2 read、write和lseek 170 6.3.3 fcntl 173 6.3.4 select 178 6.4 嵌入式Linux串口应用开发 183 6.4.1 串口概述 183 6.4.2 串口设置详解 184 6.4.3 串口使用详解 191 6.5 标准I/O开发 194 6.5.1 打开和关闭文件 194 6.5.2 文件读写 197 6.5.3 输入输出 198 6.6 实验内容 201 6.6.1 文件读写及上锁 201 6.6.2 多路复用式串口读写 204 本章小结 207 思考与练习 207 第7章 进程控制开发 208 7.1 Linux下进程概述 208 7.1.1 进程相关基本概念 208 7.1.2 Linux下的进程结构 210 7.1.3 Linux下进程的模式和类型 210 7.1.4 Linux下的进程管理 211 7.2 Linux进程控制编程 212 7.3 Linux守护进程 224 7.3.1 守护进程概述 224 7.3.2 编写守护进程 224 7.3.3 守护进程的出错处理 229 7.4 实验内容 232 7.4.1 编写多进程程序 232 7.4.2 编写守护进程 235 本章小结 238 思考与练习 239 第8章 进程间通信 240 8.1 Linux下进程间通信概述 240 8.2 管道通信 241 8.2.1 管道概述 241 8.2.2 管道创建与关闭 242 8.2.3 管道读写 244 8.2.4 标准流管道 246 8.2.5 FIFO 249 8.3 信号通信 253 8.3.1 信号概述 253 8.3.2 信号发送与捕捉 255 8.3.3 信号的处理 258 8.4 共享内存 264 8.4.1 共享内存概述 264 8.4.2 共享内存实现 265 8.5 消息队列 267 8.5.1 消息队列概述 267 8.5.2 消息队列实现 268 8.6 实验内容 272 8.6.1 管道通信实验 272 8.6.2 共享内存实验 275 本章小结 277 思考与练习 278 第9章 多线程编程 279 9.1 Linux下线程概述 279 9.1.1 线程概述 279 9.1.2 线程分类 280 9.1.3 Linux线程技术的发展 280 9.2 Linux线程实现 281 9.2.1 线程基本操作 281 9.2.2 线程访问控制 288 9.3 实验内容——“生产者消费者”实验 298 本章小结 302 思考与练习 303 第10章 嵌入式Linux网络编程 304 10.1 TCP/IP协议概述 304 10.1.1 OSI参考模型及TCP/IP参考模型 304 10.1.2 TCP/IP协议族 305 10.1.3 TCP和UDP 306 10.2 网络基础编程 308 10.2.1 socket概述 308 10.2.2 地址及顺序处理 309 10.2.3 socket基础编程 314 10.3 网络高级编程 322 10.4 ping源码分析 326 10.4.1 ping简介 326 10.4.2 ping源码分析 327 10.5 实验内容——NTP协议实现 345 本章小结 352 思考与练习 352 第11章 嵌入式Linux设备驱动开发 353 11.1 设备驱动概述 353 11.1.1 设备驱动简介及驱动模块 353 11.1.2 设备文件分类 354 11.1.3 设备号 355 11.1.4 驱动层次结构 355 11.1.5 设备驱动程序与外界的接口 355 11.1.6 设备驱动程序的特点 356 11.2 字符设备驱动编写 356 11.3 LCD驱动编写实例 363 11.3.1 LCD工作原理 363 11.3.2 LCD驱动实例 365 11.4 块设备驱动编写 374 11.4.1 块设备驱动程序描述符 374 11.4.2 块设备驱动编写流程 375 11.5 中断编程 381 11.6 键盘驱动实现 382 11.6.1 键盘工作原理 382 11.6.2 键盘驱动综述 383 11.6.3 键盘驱动流程 384 11.7 实验内容——skull驱动 394 本章小结 398 思考与练习 399 第12章 Qt图形编程 400 12.1 嵌入式GUI简介 400 12.1.1 Qt/Embedded 401 12.1.2 MiniGUI 401 12.1.3 Microwindows、Tiny X等 402 12.2 Qt/Embedded开发入门 402 12.2.1 Qt/Embedded介绍 402 12.2.2 Qt/Embedded信号和插槽机制 405 12.2.3 搭建Qt/Embedded开发环境 409 12.2.4 Qt/Embedded窗口部件 410 12.2.5 Qt/Embedded图形界面编程 414 12.2.6 Qt/Embedded对话框设计 416 12.3 实验内容——使用Qt编写“Hello,World”程序 420 本章小结 428

16,199

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧