Linux Busybox Qt Grub2 开发环境与配置整套解决方案

VirtualSys_x86_Linux_Ubuntu_14.04_CN-2014-12-07-11-12-46

Linux项目说明

 

修正日期:2014/11/25

目录

项目要求... 3

Linux内核编译... 3

目录内容介绍(LinuxProject/LinuxKernel/) 3

内核配置中需要注意... 3

Qt框架... 6

目录内容介绍(LinuxProject/ Qt-EmbAndDesktop/) 6

Qt开发环境配置... 7

Qt版本添加... 7

LinuxProjectQt/Desktop版本添加... 7

LinuxProjectQt/E版本添加... 8

Qt构建套件添加... 9

LinuxProjectQt/Desktop版本添加... 9

LinuxProjectQt/E版本添加... 10

Qt Creator开发环境添加“帮助”(开发文档)... 10

Grub2(支持“安全启动”)... 12

目录内容介绍(LinuxProject/Grub2/) 12

统BIOS创建的目录结构... 12

EFI BIOS创建的目录结构... 13

BusyBox工具... 13

目录内容介绍(LinuxProject/BusyBox/) 13

库... 14

Glib. 14

目录内容介绍(LinuxProject/lib/glib/) 14

Libiconv. 14

目录内容介绍(LinuxProject/lib/libiconv/) 14

其它介绍... 14

Linux项目根目录脚本介绍... 14

Other目录文件介绍... 17

给本Linux项目传递参数... 18

与操作系统结合... 18

传统BIOS引导方式(LegacyBIOSBoot)... 18

EFI BIOS引导方式(EFIBIOSBoot)... 19

自动选择内核... 19

注意事项... 20

其它... 21

命令行编译Qt实例配置... 21

环境变量... 21

测试环境变量设置是否生效... 22

进入需要编译的程序目录(程序名hello.cpp)... 22

使嵌入式Qt支持中文字体的方法... 22

修改Qt Framebuffer模式背景(从png图片载入当做背景)... 22

判断当前Qt库是否为嵌入式版本... 23

Qt Creator IDE字体样式... 23

Qt应用程序“国际化”... 23

其它约定... 24

SVN客户端工具PySVN安装命令... 24

SVN命令行工具安装命令... 24

Qt X11风格样式设置... 24

用到的lib库... 27

注释... 28

 


 

项目要求

操作系统版本

Linux Ubuntu 14.04 x86

 

其它代码版本

Linux 内核:linux-3.17.4

Qt框架:qt-everywhere-opensource-src-4.8.6

Grub2:grub-2.02~beta2

BusyBox工具:busybox-1.22.1

 

Glib库:glib-2.6.6

Libiconv库:libiconv-1.14

 

开发环境

Qt Creator 3.2.2

 

Linux内核编译

编译x86与x86_64版本的内核,x86内核屏蔽EFI平台启动选项,x86_64内核支持EFI平台启动。

 

目录内容介绍(LinuxProject/LinuxKernel/)

linux-3.17.4.tar.xz:Linux内核源代码压缩包

.config - x86:x86 Linux内核配置文件(在Linux默认是隐藏的,如果想查看此文件,需要显示隐藏文件。)

.config - x64:x64 Linux内核配置文件(在Linux默认是隐藏的,如果想查看此文件,需要显示隐藏文件。)

mk-LinuxKernel-all.sh:Linux内核编译脚本文件

NoSimplifyConfig:存放没有精简过的内核配置文件(.config)

 

编译后在目录中生成:x86与x86_64两个文件夹,分别存放x86与x86_64内核文件,内核文件名为:bzImage。

 

内核配置中需要注意

。 。。。 。。。 。。。

Windows server 2008 搭建VPN服务

VPN英文全称是“Virtual Private Network”,就是“虚拟专用网络”。

虚拟专用网络就是一种虚拟出来的企业内部专用线路、这条隧道可以对数据进行几倍加密达到安全使用互联网的目的。
此项技术已被广泛使用、虚拟专用网可以帮助远程用户、公司分支机构、商业伙伴及供应商同公司的内部网建立可信的安全连接,用于经济有效地连接到商业伙伴和用户的安全外联网虚拟专用网。

实验环境:

服务器系统:Windows server 2008

客户机系统:Windows server 2003

 

服务器双网卡

外网卡IP:192.168.2.253

内网卡IP:172.16.2.253

 

客户机IP:

26

 

最终效果:客户机拨入VPN访问服务器内网、同时通过VPN服务器继续访问互联网

 

一、安装VPN服务

打开服务器管理器-添加角色

26

勾选网络策略和访问服务

26

下一步

26

勾选需要安装的服务:如图

26

下一步

26

开始安装

26

安装完成

26

 

二、配置VPN服务

当安装完路由和远程访问默认是禁用的,看到的是红下箭头,需要进行配置才变绿

26

右击路由和远程访问-配置并启动路由与远程访问

26

选择自定义-下一步

26

26

配置完启动服务

26

已经可以看到变绿了!

26

 

展开以后-右击NAT-新增接口

26

 

 

选择本地接口-公用接口(连接互联网),并在此接口上启用NAT,不然客户机拨号进来就只能访问服务器内网,无法连接互联网

26

26

 

右击NAT-新增接口-内部-专用接口 (连接虚拟专用网络)

26 26

右击路由和远程访问-属性-IPv4-静态地址池(用于指定客户机拨入VPN后,分配的IP范围,我指定IP是:172.16.2.100-200)

26

创建一个名为sky的VPN用户-属性-允许拨入

26

26

 

客户机测试

1、测试能否正常拨入

2、测试能否访问服务器内网和互联网

26 26 26

查看客户机成功拨入后的IP信息!

26

Qt for Embedded Linux Environment Variables

These environment variables are relevant to Qt for Embedded Linux users.

Variable Description
POINTERCAL_FILE Specifies the file containing the data used to calibrate the pointer device.See also QWSCalibratedMouseHandler and Qt for Embedded Linux Pointer Handling.
QT_ONSCREEN_PAINT If defined, the application will render its widgets directly on screen. The affected regions of the screen will not be modified by the screen driver unless another window with a higher focus requests (parts of) the same region.Setting this environment variable is equivalent to setting the Qt::WA_PaintOnScreen attribute for all the widgets in the application.See also the Qt for Embedded Linux graphics rendering documentation.
QWS_SW_CURSOR If defined, the software mouse cursor is always used (even when using an accelerated driver that supports a hardware cursor).
QWS_DISPLAY Specifies the display type and framebuffer. For example, if the current shell is bash, ksh, zsh or sh:

The valid values for the <driver> argument are LinuxFb, QVFb, VNC, Transformed, Multi and keys identifying custom drivers, and the <display num> argument is used to separate screens that are using the same screen driver and to enable multiple displays (see the Running Qt for Embedded Linux Applications documentation for more details).

The driver specific options are described in the display management documentation.

QWS_SIZE Specifies the size of the Qt for Embedded Linux window which is centered within the screen. For example, if the current shell is bash, ksh, zsh or sh:

QWS_MOUSE_PROTO Specifies the driver for pointer handling. For example, if the current shell is bash, ksh, zsh or sh:

The valid values for the <driver> argument are MouseMan, IntelliMouse, Microsoft, VR41xx, LinuxTP, Yopy. Tslib and keys identifying custom drivers, and the driver specific options are typically a device, e.g., /dev/mouse for mouse devices and/dev/ts for touch panels.

Multiple keyboard drivers can be specified in one go:

Input will be read from all specified drivers. Note that the Vr41xx driver also accepts two optional arguments: press=<value> defining a mouseclick (the default value is 750) and filter=<value> specifying the length of the filter used to eliminate noise (the default length is 3). For example:

See also Qt for Embedded Linux Pointer Handling.

QWS_KEYBOARD Specifies the driver and device for character input. For example, if the current shell is bash, ksh, zsh or sh:

The valid values for the <driver> argument are SL5000, Yopy, VR41xx, TTY, USB and keys identifying custom drivers, and the driver specific options are typically a device, e.g., /dev/tty0.

Multiple keyboard drivers can be specified in one go:

Input will be read from all specified drivers.

See also Qt for Embedded Linux Character Input.

SVN服务器搭建和使用

Subversion是优秀的版本控制工具,其具体的的优点和详细介绍,这里就不再多说.

首先来下载和搭建SVN服务器.

现在Subversion已经迁移到apache网站上了,下载地址:

http://subversion.apache.org/packages.html

这是二进制文件包的下载地址,你可在左侧的导航栏找到源代码,文档的下载地址.

windows操作系统下面的二进制文件包一共有5种,如图:

个人认为最好用VisualSVN server 服务端和 TortoiseSVN客户端搭配使用.

点开上面的VisualSVN连接,下载VisualSVN server,如图:

然后下载TortoiseSVN客户端,官网下载地址:http://tortoisesvn.net/downloads.html

注意下载跟你电脑匹配的安装包,在页面的下面你还可以找到语言包,如图:

下载完成后,应该有这些安装包,如图:

TortoiseSVN安装包和简体中文语言包

VisualSVN server安装包

先安装VisualSVN server的安装包,双击VisualSVN server安装包,如图:

点Next,进入下一步,如图:

点同意,进图下一步,如图:

选择上面一个选项,点Next,进入下一步,如图:

Location是指VisualSVN Server的安装目录,Repositorys是指定你的版本库目录.Server Port指定一个端口,Use secure connection勾山表示使用安全连接,Use Subversion authentication 表示使用Subversion自己的用户认证.点击Next,进入下一步,如图:

点Install,进入下一步,如图:

等待安装完成,如图:

安装完成后,启动VisualSVN Server Manager,如图:

接下来我们安装TortoiseSVN,双击安装包,进入下一步.如图:

点击Next,进入下一步,如图:

选择接受,然后点击Next,进入下一步,如图:

选择安装路径,然后点击Next,进入下一步,如图:

点击Install,开始安装,如图:

等待安装完成,安装完成后如图:

接下来我们安装简体中文语言包,这个非常简单,一路Next就行,就不截图了.语言包安装完成以后在桌面任意空白地方单击鼠标右键,会在右键菜单里找到SVN,如图:

选择设置,进入下一步,如图:

在右边的语言里面选择简体中文,然后点击应用,确定,汉化即完成,如图:

到这里,服务端和客户端都已经安装完毕.

如何使用VisualSVN Server建立版本库,以及TortoiseSVN的使用.

首先打开VisualSVN Server Manager,如图:

可以在窗口的右边看到版本库的一些信息,比如状态,日志,用户认证,版本库等.要建立版本库,需要右键单击左边窗口的Repositores,如图:

在弹出的右键菜单中选择Create New Repository或者新建->Repository,进入下一步:

输入版本库名称,勾上Create default structure复选框(推荐这么做).点击OK,版本库就创建好了,版本库中会默认建立trunk,branches,tags三个文件夹,如图:

这时候我们将项目导入到版本库中,找到你的项目文件夹,在项目文件夹上点击鼠标右键,找到SVN菜单,选择导入,如图:

在弹出的对话框中填上版本库URL,这个URL可以从VisualSVN Server Manager中获取,在你的版本库上单击右键,选择Copy URL to Clipboard,这样就把版本库URL复制到你的剪贴版了.如图:

将复制的版本库URL粘贴上,在URL后面加上trunk子路径.然后在导入信息里面填上导入信息"导入项目到版本库".如图:

点击确定,所选中的项目就会被导入到版本库中.如图:

项目导入到版本库以后,不能随便让谁都能够读写版本库,所以需要建立用户组和用户.

在VisualSVN Server Manager窗口的左侧右键单击用户组,选择Create User或者新建->User,如图:

在弹出的对话框中填写User name和Password,然后点击OK,如图:

用相同的方式分别创建用户Develpoer1,Develpoer2,Develpoer3,Test1,Test2,Manger六个用户,分别代表3个开发人员,两个测试人员和一个项目经理,如图:

然后我们建立用户组,在VisualSVN Server Manager窗口的左侧右键单击用户组,选择Create Group或者新建->Group,如图:

在弹出窗口中填写Group name为Developers,然后点Add按钮,在弹出的窗口中选择三个Developer,加入到这个组,然后点Ok,如图:

用相同的方式创建组Managers,Testers,如图:

接下来我们给用户组设置权限,在MyRepository上单击右键,选择属性,如图:

在弹出的对话框中,选择Security选项卡,点击Add按钮,选中Developers,Managers,Testers三个组,然后添加进来,给Developers,Managers权限设置为Read/Write,Tester权限设置为Read Only,如图:

到此,服务端就完成了.

接下来,我们用客户端去检出代码,在桌面空白处单击右键,选择SVN检出,在弹出的对话框中填写版本库URL(具体获取方式,上面讲上传项目到版本库的时候讲过),选择检出目录,点击确定.如图:

开始检出项目,如图:

检出完成之后,我们打开工作副本文件夹,会看到所有文件和文件夹都有一个绿色的√.如图:

至此,创建版本库和使用TortoiseSVN导入项目,检出项目已经介绍完毕.

接下来,试试用TortoiseSVN修改文件,添加文件,删除文件,以及如何解决冲突等.

添加文件

在检出的工作副本中添加一个Readme.txt文本文件,这时候这个文本文件会显示为没有版本控制的状态,如图:

这时候,你需要告知TortoiseSVN你的操作,如图:

加入以后,你的文件会变成这个状态,如图:

这时候使用TortoiseSVN进行提交.这样别人就能看到你所做的更改了,如图.

修改文件

使用TortoiseSVN更新,修改工作副本中的Readme.txt文件,加入"hello world!",然后保存,你会发现Readme.txt文件的图标改变了,如图:

这个红色的叹号代表这个文件被修改了,这时候,提交更改,其他人即可看到你的更改.

重命名文件

使用TortoiseSVN更新,重命名工作副本中的Readme.txt文件为"Readme1.txt',然后保存,你会发现Readme.txt文件的图标改变了,如图:

更添加文件一个道理,这时候你需要告诉TortoiseSVN你的操作,如图:

加入以后,提交,这时候版本库中的Readme.txt文件将会被重命名为"Readme1.txt".

删除文件

使用TortoiseSVN更新,使用TortoiseSVN删除工作副本中的Readme.txt文件,然后提交,版本库中的相应文件即被删除掉了,如图:

强制写注释

为了以后你能更清晰的看到你所做的每一次更改的原因,你在每次提交的时候应该写上注释,而且尽量详细.如图:

但是,可能有的人因为觉得太繁琐,而不填写注释,这不利于以后的版本控制,可以将强制在提交的时候写注释,首先单击右键,选择TortoiseSVN->属性,如图:

在弹出的对话框中,点击新建->日志大小,设置提交日志的最小字符数和锁定日志的最小字符数为20,提交文本框中显示边线的字符位置设置为100,点击确定,如图:

提交,以后再次提交的时候,如果输入的注释少于20个字符,将无法提交.

冲突解决

冲突问题是最常见的问题,它是这样产生的,A用户check out了一个工作副本A,接着B用户又check out了一个工作副本B.然后A用户对副本A中的文件C做了修改(可以是内容修改,文件删除,重命名,以及位置移动),并且提交.这时候B用户也对文件C的相同部分做了修改,这时候如果B用户进行提交,会先被告知版本过时,要求更新,然后更新的时候会提示冲突了,这时候可以用冲突编辑器进行手动选择.

ubuntu下自动安装arm-linux-gcc和arm-linux-g++

使用apt-get 自动下载安装arm-linux-gcc和arm-linux-g++。
使用如下命令进行arm-linux-gcc的安装:
sudo apt-get install gcc-arm-linux-gnueabihf
使用如下命令进行arm-linux-g++的安装:
sudo apt-get install g++-arm-linux-gnueabihf
卸载时使用如下命令进行移植:
(1)、arm-linux-gcc
sudo apt-get remove gcc-arm-linux-gnueabihf
(2)、arm-linux-g++
sudo apt-get remove g++-arm-linux-gnueabihf