|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
//加入头文件: #include <QTextCodec> int main(int argc, char *argv[]) { QApplication a(argc, argv); //中文支持 QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8")); QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8")); //支持Tr中文 QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8")); //支持中文文件名显示 QFont font; font.setPointSize(160); //实际上是16的字号,但设成16却不行 font.setFamily(("unifoun")); font.setBold(false); a.setFont(font); //中文支持 return a.exec(); } |
分类目录归档:技术文献
Linux 下编译并安装配置 Qt 全过程
1。获得源代码
src 官网下载地址:ftp://ftp.qt.nokia.com/qt/source/
2009 年 10 月 1 日发布的 qt-x11-opensource-src-4.5.3.tar.gz,大小 122 Mb。
2。解压缩
tar xvfz qt-x11-opensource-src-4.5.3.tar.gz
3。生成 makefile 文件
./configure
这个时候他会问你:“Which edition of Qt do you want to use?”
然后给你两个类型供选择:
Type 'c' if you want to use the Commercial Edition.
Type 'o' if you want to use the Open Source Edition.
第一个是商业版,第二个是自由版。
选择 'o'(Qt/嵌入式自由版是Qt为了开发自由软件提供的嵌入式版本)。
这时候,出现许可界面。
选择 'yes' 接受许可协议。
开始生成 makefile 文件。这个大约需要 5 -10 分钟的时间。
4。Qt 编译
gmake
这个过程时间比较长,需要两个小时左右。
5。Qt 安装
运行 gmake install
默认安装至 /usr/local/Trolltech/Qt-4.5.3
大约 5 - 10 分钟。正常结束,安装完毕。
运行 /usr/local/Trolltech/Qt-4.5.3/bin/designer ,看见 qt 启动,也就是说 qt 安装好了。
6。设置环境变量
一。先修改用户环境变量
vi /home/defonds/.bashrc
在其最后添加以下信息
export QTDIR=/usr/local/Trolltech/Qt-4.5.3
export PATH=$QTDIR/bin:$PATH
export MANPATH=$QTDIR/man:$MANPATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
二。再修改所有用户环境变量
vi /etc/profile
在其最后添加以下信息
export QTDIR=/usr/local/Trolltech/Qt-4.5.3
export PATH=$QTDIR/bin:$PATH
export MANPATH=$QTDIR/man:$MANPATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
三。测试一下
重新开一个终端,输入命令:
qmake -v
输出结果:
QMake version 2.01a
Using Qt version 4.5.3 in /usr/local/Trolltech/Qt-4.5.3/lib
输入命令:
which qmake
输出结果:
/usr/local/Trolltech/Qt-4.5.3/bin/qmake
证明 Qt 环境变量已经被配置成功。
编者按 :
Linux 启动时,先读取用户环境变量,即 /home/defonds/.bashrc 的设置。次读取所有用户环境变量,即 /etc/profile 中的配置。
开始 Qt
写个简单的 Qt 程序使用安装的 Qt 编译来测试一下它的工作效果
新建一个文件名为 hello.cpp,其内容如下:
|
1 2 3 4 5 6 7 8 9 |
#include <QApplication> #include <QLabel> int main(int argc,char *argv[]) { QApplication app(argc,argv); QLabel *label = new QLabel("Hello Qt!"); label->show(); return app.exec(); } |
保存 hello.cpp,编译过程如下:
在 hello.cpp 所在目录下,运行命令
qmake -project
hello.cpp 同目录下有 hello.pro 文件被生成,它是与平台无关的工程文件。
在 hello.cpp 所在目录下,运行命令
qmake hello.pro
同目录下有 Makefile 文件被生成(Makefile是指导编译器编译源代码的配置文件,在其目录下输入make命令(nmake在win32,vc6环境)就可以完成编译)。
在 hello.cpp 所在目录下,运行命令
make
同目录下有 hello,hello.o 两个文件被编译生成。其中 hello 就是在当前 Linux 系统下使用 Qt 编译生成的可执行文件了。双击运行 hello,“Hello Qt!“ 文本框弹出,OK!做到这一步,证明 Qt 已经完全可以在你的电脑上运作了。还等什么呢,开始你精彩而又愉快的 Qt 开发之旅吧!
制作cpio格式的Linux内存盘
首先进入cpio内存盘目录,输入:find . | cpio -o -H newc | gzip > ../initramfs_data.cpio.gz
如果想成功启动必须根目录有一个init文件。
64位Linux内核运行32应用程序内核配置
Executable file formats / Emulations
[*] Kernel support for ELF binaries
[ ] Write ELF core dumps with partial segments
<*> Kernel support for MISC binaries
[*] IA32 Emulation
<M> IA32 a.out support
移除 BCD 与 NVRAM 中重复的固件对象
在有些使用统一可扩展固件接口 (UEFI) 的计算机上,固件会在计算机开机时为本机装置 (如 CD-ROM 或硬盘) 建立静态随机存取内存 (NVRAM) 项目。Bcdedit 会同步处理 NVRAM 中的固件命名空间对象与系统开机设定数据 (BCD)。Bcdedit 会在您执行 bcdedit /set 或 /enum 命令时,开启系统 BCD 存放区。bcdedit 开启 BCD 时,会比较 NVRAM 中的项目与 BCD 中的项目。固件在 NVRAM 中建立的项目若未存在于 BCD 中,即会新增至系统 BCD。当 bcdedit 关闭系统 BCD 时,BCD 中任何不在 NVRAM 内的开机管理程序项目皆会新增至 NVRAM 中。bcdedit
/import 命令会将系统 BCD 中的所有固件命名空间对象复制到 NVRAM 中。
若您执行多项 bcdedit /import 操作,NVRAM 即可能包含系统上之装置 (如 CD ROM 与硬盘) 的多个项目。多项 /import 操作可能会导致许多重复项目。下列命令可用以列举 BCD 中的固件命名空间对象:
Bcdedit /enum firmware
下列范例类似于 bcdedit /enum 固件命令所产生的输出:
固件开机管理程序
---------------------
identifier {fwbootmgr}
displayorder {bootmgr}
{93cee840-f524-11db-af62-aa767141e6b3}
{93cee841-f524-11db-af62-aa767141e6b3}
{93cee842-f524-11db-af62-aa767141e6b3}
{93cee844-f524-11db-af62-aa767141e6b3}
{93cee843-f524-11db-af62-aa767141e6b3}
timeout 2
Windows 开机管理程序
--------------------
identifier {bootmgr}
device
partition=\Device\HarddiskVolume1
path
\EFI\Microsoft\Boot\bootmgfw.efi
description Windows Boot Manager
locale en-US
inherit {globalsettings}
default {current}
displayorder {current}
toolsdisplayorder {memdiag}
timeout 30
固件应用程序 (101fffff)
-------------------------------
identifier
{93cee840-f524-11db-af62-aa767141e6b3}
description Primary Master CDROM
固件应用程序 (101fffff)
-------------------------------
identifier
{93cee841-f524-11db-af62-aa767141e6b3}
description Harddisk 4
固件应用程序 (101fffff)
-------------------------------
identifier
{93cee842-f524-11db-af62-aa767141e6b3}
description Internal EFI Shell
固件应用程序 (101fffff)
-------------------------------
identifier
{93cee843-f524-11db-af62-aa767141e6b3}
description Floppy
固件应用程序 (101fffff)
-------------------------------
identifier
{93cee844-f524-11db-af62-aa767141e6b3}
description Acpi(PNP0A03,0)/Pci(1F|1)/Ata(Primary,Master)/CDROM(Entry1)
若您重复使用 bcdedit /import,NVRAM 与系统 BCD 中即可能会有多个固件对象。若您将主计算机中的 BCD 存放区汇入到目标计算机,则相同的装置可能会有多个固件项目。若有多个固件项目存在,您所看见的 bcdedit /enum 固件输出将包含类似下列范例所示的固件项目:
固件开机管理程序
---------------------
identifier {fwbootmgr}
displayorder {bootmgr}
{93cee840-f524-11db-af62-aa767141e6b3}
{93cee841-f524-11db-af62-aa767141e6b3}
{93cee842-f524-11db-af62-aa767141e6b3}
{93cee844-f524-11db-af62-aa767141e6b3}
{93cee843-f524-11db-af62-aa767141e6b3}
{8b87c5a0-f2f2-11db-9717-f87ee6ea6002}
{8b87c5a1-f2f2-11db-9717-f87ee6ea6002}
{8b87c5a2-f2f2-11db-9717-f87ee6ea6002}
{8b87c5a3-f2f2-11db-9717-f87ee6ea6002}
{8b87c5a4-f2f2-11db-9717-f87ee6ea6002}
timeout 2
每个装置可能会有两个或更多具有不同 GUID 的项目。例如,主服务器 CDROM 可能包含多个项目:
固件应用程序 (101fffff)
-------------------------------
identifier
{93cee840-f524-11db-af62-aa767141e6b3}
description Primary Master CDROM
固件应用程序 (101fffff)
-------------------------------
identifier {8b87c5a0-f2f2-11db-9717-f87ee6ea6002}
description Primary Master CDROM
您可以使用多个 Bcdedit 命令,将 NVRAM 与 BCD 系统存放区中的多个或重复项目移除。若要对您想要移除的多个对象项目使用正确的对象 GUID,则可能必须手动建立命令脚本。
移除重复项目
1.
使用下列 Bcdedit 命令为目前的系统存放区储存复本。
Bcdedit /export savebcd
您也可以于日后使用此档案进行复原。
2.
复制要用于 Bcdedit 删除操作的 SaveBCD 档案。
Copy savebcd newbcd
3.
列举系统 BCD 存放区中的固件命名空间对象,并将输出结果储存到文本文件中:
Bcdedit /enum firmware > enumfw.txt
4.
使用 Notepad.exe 开启 Enumfw.txt,检视要删除之重复 GUID 项目的列表。检视计算机上的 GUID 项目列表。
5.
使用 [记事本] 建立新的命令档案。将档案储存为 RemoveDups.cmd。
6.
在 RemoveDups.cmd 档案中新增命令行,以删除依照 [固件开机管理程序] 显示顺序列出的重复固件 GUID:
Bcdedit /store newbcd /delete
{93cee840-f524-11db-af62-aa767141e6b3}
对每个要移除的 GUID 重复此命令。就上面的范例而言,在 RemoveDups.cmd 中加入下列命令:
Bcdedit /store newbcd /delete
{93cee841-f524-11db-af62-aa767141e6b3}
Bcdedit /store newbcd /delete
{93cee842-f524-11db-af62-aa767141e6b3}
Bcdedit /store newbcd /delete
{93cee843-f524-11db-af62-aa767141e6b3}
Bcdedit /store newbcd /delete
{93cee844-f524-11db-af62-aa767141e6b3}
Bcdedit /store newbcd /delete
{8b87c5a1-f2f2-11db-9717-f87ee6ea6002}
Bcdedit /store newbcd /delete {8b87c5a2-f2f2-11db-9717-f87ee6ea6002}
Bcdedit /store newbcd /delete
{8b87c5a3-f2f2-11db-9717-f87ee6ea6002}
Bcdedit /store newbcd /delete
{8b87c5a4-f2f2-11db-9717-f87ee6ea6002}
在 EFI 固件已初始化其本机装置之 NVRAM 项目标计算机上,您即可在必要时删除所有 GUID 项目。请不要删除 {bootmgr} 的项目
7.
使用 /clean 选项在汇入操作的过程中移除所有 NVRAM 项目,并将最终命令新增至 RemoveDups.cmd,以汇入新的 BCD 档案:
Bcdedit /import newbcd /clean
8.
储存档案,并于命令提示字符中执行 RemoveDups.cmd,即可移除 newbcd 存放区中所有的重复项目,并将 newbcd 存放区汇入系统 BCD 中。
9.
重新开启系统。在重新启动期间,EFI 固件会重新初始化固件对象 GUID 对应于系统连接装置的 NVRAM。使用 bcdedit /enum 固件命令,确认所有重复的固件项目均已移除。