没有合适的资源?快使用搜索试试~ 我知道了~
首页基于Linux下电子阅读器设计与实现
基于Linux下电子阅读器设计与实现
0 下载量 12 浏览量
更新于2023-11-23
收藏 8.71MB DOC 举报
《基于Linux下电子阅读器的设计与实现》是武汉理工大学的毕业设计论文。该论文要求开发一个基于Linux环境的电子阅读器,并学习电子阅读器的编码与解码、专用文件格式的解读和转码、阅读器的设计原理,并熟练掌握在Linux环境下应用qt编程开发的能力。论文的主要内容包括电子阅读器在日常生活和社交层面的应用、设计电子阅读器的相关技术、熟悉了解电子阅读器的qt开发环境、深入分析电子阅读器的关键技术和程序设计流程,并熟练掌握电子阅读器的制作和测试。学生需要提交一份完整、层次清晰、叙述流畅、排版规范的毕业设计论文,并包括毕业设计论文、源程序等内容在内的毕业设计电子文档及其他相关材料。主要参考文献包括《软件开发环境与工具》、《操作系统原理与Linux系统实验》、《数据结构》、《Linux窗口程序设计—Qt4精彩实例分析》、《Linux编程从入门到精通》和《Pointers On C》。
资源详情
资源推荐
![](https://csdnimg.cn/release/download_crawler_static/88025395/bgd.jpg)
武汉理工大学
武汉理工大学
程序。
每个语言编译器都是独立程序,此程序可处理输入的原始码,并输出组合语言码。全部
的语言编译器都拥有共通的中介架构:一个前端解析符合此语言的原始码,并产生一抽
象语法树,以及一翻译此语法树成为 GCC 的暂存器转换语言〈RTL〉的后端。编译器
最佳化与静态程序码解析技术(例如 FORTIFY_SOURCE,一个试图发现缓冲区溢位
〈buffer overflow〉的编译器)在此阶段应用于程序码上。最后,适用于此硬件架构的
组合语言程序码以 Jack Davidson 与 Chris Fraser 发明的算法产出。
2.3.1 前端接口
前端的功能在于产生一个可让后端处理之语法树。此语法解析器是手写之递回语法
解析器。直到最近,程序的语法树结构尚无法与欲产出的处理器架构脱钩。而语法树的
规则有时在不同的语言前端也不一样,有些前端会提供它们特别的语法树规则。
在 2005 年,两种与语言脱钩的新型态语法树纳入 GCC 中。它们称为 GENERIC 与
GIMPLE。语法解析变成产生与语言相关的暂时语法树,再将它们转成 GENERIC。之
后再使用"gimplifier"技术降低 GENERIC 的复杂结构,成为一较简单的静态唯一形式
(Static Single Assignment form,SSA)基础的 GIMPLE 形式。此形式是一个与语言和
处理器架构脱钩的全域最佳化通用语言,适用于大多数的现代编程语言。
2.3.2 中介接口
一般编译器作者会将语法树的最佳化放在前端,但其实此步骤并不看语言的种类而
有不同,且不需要用到语法解析器。因此 GCC 作者们将此步骤归入通称为中介阶段的
部分里。此类的最佳化包括消解死码、消解重复运算与全域数值重编码等。许多最佳化
技巧也正在实作中。
2.3.3 后端接口
GCC 后端的行为因不同的前处理器宏和特定架构的功能而不同,例如不同的字符尺
寸、呼叫方式与大小尾序等。后端接口的前半部利用这些讯息决定其 RTL 的生成形式,
因此虽然 GCC 的 RTL 理论上不受处理器影响,但在此阶段其抽象指令已被转换成目标
架构的格式。
GCC 的最佳化技巧依其释出版本而有很大不同,但都包含了标准的最佳化算法,例
如循环最佳化、执行绪跳跃、共通程序子句消减、指令排程等等。而 RTL 的最佳化由
于可用的情形较少,且缺乏较高阶的资讯,因此比较起近来增加的 GIMPLE 语法树形
式,便显得比较不重要。
后端经由一重读取步骤后,利用描述目标处理器的指令集时所取得的资讯,将抽象暂存
器替换成处理器的真实暂存器。此阶段非常复杂,因为它必须关照所有 GCC 可移植平
台的处理器指令集的规格与技术细节。
后端的最后步骤相当公式化,仅仅将前一阶段得到的组合语言码藉由简单的副函式
转换其暂存器与内存位置成相对应的机械码。
2.3.4 基本用法
在使用 Gcc 编译器的时候,我们必须给出一系列必要的调用参数和文件名称。GCC
![](https://csdnimg.cn/release/download_crawler_static/88025395/bge.jpg)
武汉理工大学
武汉理工大学
编译器的调用参数大约有 100 多个,其中多数参数我们可能根本就用不到,这里只介绍
其中最基本、最常用的参数。
GCC 最基本的用法是∶gcc [options] [filenames]
其中 options 就是编译器所需要的参数,filenames 给出相关的文件名称。
-c,只编译,不链接成为可执行文件,编译器只是由输入的.c 等源代码文件生成.o 为后
缀的目标文件,通常用于编译不包含主程序的子程序文件。
-o output_filename,确定输出文件的名称为 output_filename,同时这个名称不能和源文
件同名。如果不给出这个选项,gcc 就给出预设的可执行文件 a.out。
-g,产生符号调试工具(GNU 的 gdb)所必要的符号资讯,要想对源代码进行调试,我们
就必须加入这个选项。
-O,对程序进行优化编译、链接,采用这个选项,整个源代码会在编译、链接过程中进
行优化处理,这样产生的可执行文件的执行效率可以提高,但是,编译、链接的速度就
相应地要慢一些。
-O2,比-O 更好的优化编译、链接,当然整个编译、链接过程会更慢。
-Idirname,将 dirname 所指出的目录加入到程序头文件目录列表中,是在预编译过程中
使用的参数。C 程序中的头文件包含两种情况∶
A)#include <myinc.h>
B)#include “myinc.h”
其中,A 类使用尖括号(< >),B 类使用双引号(“ ”)。对于 A 类,预处理程序 cpp 在
系统预设包含文件目录(如/usr/include)中搜寻相应的文件,而 B 类,预处理程序在目标
文件的文件夹内搜索相应文件。
2.4 文件架构依赖包的使用简介
2.4.1 zlib 的简介以及作用
zlib 是提供数据压缩用的函式库,由 Jean-loup Gailly 与 Mark Adler 所开发,初版
0.9 版在 1995 年 5 月 1 日发表。zlib 使用 DEFLATE 算法,最初是为 libpng 函式库所
写的,后来普遍为许多软件所使用。此函式库为自由软件,使用 zlib 授权。截至 2007
年 3 月,zlib 是包含在 Coverity 的美国国土安全部赞助者选择继续审查的开源项目。
Zlib 具有以下特性:
(1) 数据头(header)
zlib 能使用一个 gzip 数据头,zlib 数据头或者不使用数据头压缩数据。
通常情况下,数据压缩使用 zlib 数据头,因为这提供错误数据检测。当数据不使用数据
头写入时,结果是没有任何错误检测的原始 DEFLATE 数据,那么解压缩软件的调用者
不知道压缩数据在什么地方结束。gzip 数据头比 zlib 数据头要大,因为它保存了文件
名和其他文件系统信息,事实上这是广泛使用的 gzip 文件的数据头格式。注意 zlib 函
式库本身不能创建一个 gzip 文件,但是它相当轻松的通过把压缩数据写入到一个有
gzip 文件头的文件中。
(2) 算法
目前 zlib 仅支持一个 LZ77 的变种算法,DEFLATE 的算法。这个算法使用很少的
系统资源,对各种数据提供很好的压缩效果。这也是在 ZIP 档案中无一例外的使用这个
算法。(尽管 zip 文件格式也支持几种其他的算法)。看起来 zlib 格式将不会被扩展使
![](https://csdnimg.cn/release/download_crawler_static/88025395/bgf.jpg)
武汉理工大学
武汉理工大学
用任何其他算法,尽管数据头可以有这种可能性。
(3) 使用资源
函数库提供了对处理器和内存使用控制的能力,不同的压缩级别数值可以指示不同
的压缩执行速度。还有内存控制管理的功能。这在一些诸如嵌入式系统这样内存有限制
的环境中是有用的。
(4) 策略
压缩可以针对特定类型的数据进行优化。如果你总是使用 zlib 库压缩压缩特定类型
的数据,那么可以使用有针对性的策略可以提高压缩效率和性能。例如,如果你的数据
包含很长的重复数据,那么可以用 RLE(运行长度编码)策略,可能会有更好的结果。
对于一般的数据,默认的策略是首选。
(5) 错误处理
错误可以被发现和跳过数据混乱可以被检测(只要数据和 zlib 或者 gzip 数据头一
起被写入-参见上面)
此外,如果全刷新点(full-flush points)被写入到压缩后的数据流中,那么错误数
据是可以被跳过的,并且解压缩将重新同步到下个全刷新点。(错误数据的无错恢复被
提供)。全刷新点技术对于在不可靠的通道上的大数据流是很有用的,一些过去的数据
丢失是不重要的,但是建立太多的全刷新点会极大的影响速度和压缩。
(6) 数据长度
对于压缩和解压缩,没有数据长度的限制。重复调用库函数允许处理无限的数据块。
一些辅助代码(计数变量)可能会溢出,但是不影响实际的压缩和解压缩。当压缩一个
长(无限)数据流时,最好写入全刷新点。
2.4.2 qmake 介绍以及特点
qmake 是一个协助简化跨平台进行专案开发的构建过程的工具程式,Qt 附带的工
具之一 。qmake 能够自动生成 Makefile、Microsoft Visual Studio 专案文件 和 xcode
专案文件。不管源代码是否是用 Qt 写的,都能使用 qmake,因此 qmake 能用于很多
软件的构建过程。
[1]
特点:
手写 Makefile 是比较困难而且容易出错,尤其在进行跨平台开发时必须针对不同平台
分别撰写 Makefile,会增加跨平台开发复杂性与困难度。qmake 会根据专案文件
(.pro)里面的信息自动生成适合平台的 Makefile。开发者能够自行撰写专案文件或是
由 qmake 本身产生。qmake 包含额外的功能来方便 Qt 开发,如自动的包含 moc 和 uic
的编译规则。
3 系统分析
3.1 格式介绍
3.1.1 PC 格式
(1) EXE
剩余73页未读,继续阅读
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/b4e33dee3e6f433ca7c85e388d1cba5c_m0_64342982.jpg!1)
yyyyyyhhh222
- 粉丝: 440
- 资源: 6万+
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
最新资源
- AirKiss技术详解:无线传递信息与智能家居连接
- Hibernate主键生成策略详解
- 操作系统实验:位示图法管理磁盘空闲空间
- JSON详解:数据交换的主流格式
- Win7安装Ubuntu双系统详细指南
- FPGA内部结构与工作原理探索
- 信用评分模型解析:WOE、IV与ROC
- 使用LVS+Keepalived构建高可用负载均衡集群
- 微信小程序驱动餐饮与服装业创新转型:便捷管理与低成本优势
- 机器学习入门指南:从基础到进阶
- 解决Win7 IIS配置错误500.22与0x80070032
- SQL-DFS:优化HDFS小文件存储的解决方案
- Hadoop、Hbase、Spark环境部署与主机配置详解
- Kisso:加密会话Cookie实现的单点登录SSO
- OpenCV读取与拼接多幅图像教程
- QT实战:轻松生成与解析JSON数据
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)