ubuntu C++

ubuntu C++
ubuntu C++

本文由komavenn贡献

pdf文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。

第30章 Ubuntu中的C/C++ 编程工具

学习诸如C或C++之类的计算机语言要比学习shell脚本编程更加复杂和 困难。您必须学会在编程时考虑计算机的资源、计算机工作的方式,还 要考虑操作系统、语法以及各种类型的开发工具,而不是仅仅考虑那些 面向用户的命令。 当然,学习C或C++的主要好处就是Linux以及与其相关的软件几乎都是 开源的—— 若某个程序不符合您的要求,就可以自己动手修改。几乎 在所有的Linux程序的源代码中,都可以从程序员的注释中找到很多隐 藏的文档。 本章关注的是Linux中与C和C++相关的工具,例如GNU C 编译器集(GNU C Compiler Collection,GCC),以及GNOME和K桌面环境(K Desktop E nvironment,KDE)中的典型开发环境。本章还介绍了一些编译C和C++程 序的命令,以及相关编程工具的信息。 30.1 Linux中的C编程 C语言是与诸如Linux、 BSD等类UNIX的操作系统联系最紧密的编程语言。 从上世纪70年代以来,大量的UNIX操作系统和应用程序都是用C编写的。 因为C语言不依赖于任何特定的硬件架构。换句话说就是,UNIX中的大 部分代码都不知道也不关心它实际是运行在哪台计算机上的。与机器相 关的功能被隔离在了UNIX内核的少部分模块中,因此将C语言编写的程 序移植到不同的计算机架构上是非常容易的。 C是编译型语言,这意味着C源代码先由预处理器进行分析,接着转换 成汇编语言,然后再转换成适应于目标CPU的机器指令。接下来,汇编 器(assembler)会根据这些机器指令创建可执行文件或是object文件。 最后,在外部程序连接器(linker)的支持下将object文件连接起来。C 程序存储在扩展名为.c的文本文件中,通常至少包含一个程序或是函 数,例如main(),除非这是个包含有共享的变量或其他数据的定义或 声明的include文件(扩展名为.h,也称之为头文件)。函数是完成C程序 所需要完成的任务的每一步的命令。 注意:

Linux之所以能在不同的CPU上运行,就是因为其内核基本上是用C编写 的。关于从源代码编译Linux内核的更多信息,请参见第35章。 30.1.1 C++编程 C++是C的面向对象的扩展。由于C++是C的超集,因此C++编译器可以正 确地编译C程序,也可以使用C++编写非面向对象的代码。反之是行不通 的:C编译器不能编译C++代码。 C++通过提供面向对象设计和编码所必需的一些功能,对C的能力进行 扩展。C++还支持用于特定数据结构的函数,而且这并不需要使用基于 类的面向对象技术。正是由于这些因素,C++使得当前的UNIX正在逐步 地转向面向对象的开发方式。 gcc提供了对C++编程的支持,可以使用g++编译C++代码。KDE中还有一 些在构建KDE程序时可使用的C++工具,例如moc(Meta Object Compile r)。 30.1.2 Linux C/C++编程入门 编写Linux下的C程序要求您知道C语言的语法,对Linux内核的接口(使 用1100个不同的C函数中的一个或多个,也就是系统调用)要有所了解, 还要知道如何使用Linux编程工具,例如gcc和make。在本章中,您将会 学会所有的这些概念和使用方法。 首先,要确定您已经安装了所有开发项目所需的软件开发包(可能要用 到synaptic客户端;详见第7章)。基本的开发软件需要安装50多个不同 的软件包以及110MB硬盘空间。如果您计划为Linux内核构建程序,那还 需要安装内核开发包,以及180MB的存储空间(这还没有包括构建新内 核时所需的临时磁盘空间)。 您还应该熟悉某种优秀的文本编辑器。尽管GNU鼓吹者使用emacs编辑环 境编写、编辑和编译程序,但是还有很多其他的开发人员只是使用诸如 vi或nano之类的编辑器编辑源代码,然后使用命令行运行开发工具。 在为GNOME或KDE编程时,您可能会发觉使用图形界面的开发项目管理 工具是最方便的,例如GNOME的Glade(GTK+用户界面构建器,glade-2)、 Trolltech的Qt Designer(设计器)、KDE的KDevelop(KDE开发环境,kde velop)。这些客户端使得您可以使用图形界面的绘图工具创建程序的界 面,从而将您从客户端的界面设计中解放出来。它们还可以自动地为程 序生成所有必要的工程和源代码文件。详见本章稍后的“图形界面开发 工具”小节。 30.1.3 编程的步骤 很多Linux的C程序员都是为解决现实问题而开始编写程序的,例如可

以从蜂窝电话或手持电脑下载电话号码或其他数据的简单命令行程序。 很多初学者最开始都是学习Linux文本编辑器的使用,搜索所需的软件 教程,阅读文档,浏览Linux源代码,学习如何运行编译器(例如gcc, 本章稍后会做讨论),然后才是完整

的编程过程:编辑、 编译、 执行和测 试。 本章中接下来的小节会讨论Ubuntu中的一些必需或有用的软件工具。您 还会看到如何创建、编译和运行一个简单的C程序,以及如何使用一些 图形界面的界面设计工具(例如Glade、 Designer、 KDevelop)以缩短开发 图形程序的用户界面的时间。这些工具可以减少完成这些工作所需的时 间和工作量,使得您可以专注于新程序的核心功能。 30.2 C/C++语言的基本元素 C编程语言有它自己的语法—— 一个指定的形式,所有的命令和程序 都得照这个形式的要求编写才能被计算机系统理解和处理。在开始C编 程之前,您需要了解以下这些语法: ● 注释—— 注释是说明代码和描述程序的语句。注释是以某些特定的 字符开始和结束的,例如/*和*/,这就告诉编译器忽略这两者之间的 内容。 ● 标识符—— 您需要知道如何正确地命名常量、变量以及子程序,例 如&a、*p、my_func()。 ● 关键字—— 关键字就是C语言中有特殊含义的单词,这些单词是为 命令或参数保留的。 例如:关键字int、 char和struct用于声明变量、 数 组和结构。 ● 常量—— 您需要知道如何使用诸如整数、 浮点数、 字符、 字符串之类 的常量,例如10、 “hello”,还需要知道如何定义符号常量,例如# a、 define NULL 0。 ● 语法概念—— 您需要知道如何在表达式中使用操作符,操作符用 于计算、获取或分配值,例如for (;;)和line[n++] = a;。 您还应该对所使用的编程工具做进一步的了解,知道这个工具的特点 和功能,例如GNU的gcc编译器系统(详见本章后面的“使用GNU C编译 器”小节,其中对gcc做了大致的介绍)。 30.3 Ubuntu中的C语言编程项目管理工具 Ubuntu中有很多可以简化C/C++编程的工具。这些工具可以创建程序(编 辑器),编译程序(gcc),创建库(ar),控制源代码(Revision Control System(RCS)和Concurrent Versions System(CVS)),自动构建程序(m ake),对程序进行调试(gdb和ddd),以及查找性能瓶颈(gprof)。

接下来的小节会介绍一些Ubuntu中的编程及项目管理工具。本书附带的 光盘中包含有这些工具,这有助于提高软件开发项目的自动化程度。如 果您之前有UNIX经验,对这些程序中的绝大部分都应该感到熟悉,因 为它们都是UNIX程序员常用的工具。 30.3.1 使用make构建程序 使用make命令可以自动编译和安装C程序,并且其使用非常简单。若您 想建立自己的自动化编译,就需要学习make的特殊语法;接下来的小 节会带您学习make的基本设置。 1. 使用Makefile make命令是根据makefile自动地对程序进行编译和更新的。makefile其 实就是一个文本文件,其中包含有传给预处理器、编译器、汇编器和连 接器的选项。除了这些东西,makefile还规定了代码模块所需要编译的 源代码文件(以及编译器命令行)和编译程序所需要的代码模块—— 这 种机制被称为依赖性检查。 make命令最美妙的地方就在于它的灵活性。可以通过编写一个简单的ma kefile来使用make,也可以编写一个包含有大量宏、规则或命令,用于 单个目录或是整个文件系统,可以构建程序、更新系统,甚至是管理文 档的复杂的makefile。make命令还可以与其他的程序协同工作,包括文 本处理系统,例如TeX。 使用make编译、构建和安装软件包只需要使用一个命令,如下所示: # make install 可以使用默认的makefile(通常文件名为Makefile,大写M),或是使用 make的-f选项指定makefile,例如下面的MyMakeFile: # make -f MyMakeFile 还可以使用其他的选项,取决于makefile的内容。 2. 使用宏和Makefile目标 使用make的宏可以提高程序的可移植性。使用宏能让其他操作系统的用 户便捷地使用本地的值配置程序,例如所需的软件工具的名称和位置, 或是路径名。在下面的例子中,宏定义了编译器的名称(CC)、安装程序 (INS)、 程序安装的位置(INSDIR)、 连接器查找库的位置(LIBDIR)、 所需 的库的名称(LIBS)、源代码文件(SRC)、中间的object代码文件(OBS)以 及最终程序的名称(PROG): # a sample makefile for a skeleton program CC= gcc INS= install

INSDIR = /usr/local/bin LIBDIR= -L/usr/X11R6/lib LIBS= -lXm -lSM -lICE -lXt -lX11 SRC= skel.c OBJS= skel.o PROG= skel skel: ¥{OBJS} ¥{CC} -o ¥{PROG} ¥{SRC} ¥{LIBDIR} ¥{LIBS}

install: ¥{PROG} ¥{INS} -g root -o root ¥{PROG} ¥{INSDIR} 注意: 前面例子中的缩进行是制表符,而不是空格。一定要记住这点!人眼很 难看出其中的差别,但是make可以。您第一次在Linux下构建程序时, 若make报告出让人迷惑的错误,首先要检查的就是您的makefile是不 是使用制表符或是其他正确的格式。 使用前面

例子中的makefile,可以使用如下命令构建程序: # make 要构建makefile中的某个组件,可以在命令行中使用目标定义。如果仅 仅是构建这个程序,可以使用make和skel目标,如下所示: # make skel 若对目标对象的元素做了改动,例如源代码文件,make会自动重建目 标。这也是使用make管理开发项目的便捷之处。一步完成程序的构建和 安装,可以指定install目标,如下所示: # make install 大型软件项目的makefile中可能会有很多目标,一些常见的目标如下 所示: ● test—— 对最终的软件运行指定的测试。 ● man—— 处理有man宏的troff文档。 ● clean—— 删除所有现有的object文件。 ● archive—— 清除、归档和压缩整个源代码树。 ● bugreport—— 自动搜集并发送构建的副本或是错误日志的副本。 大型应用程序可以有上百个源代码文件。编译和连接这些程序是件非常 复杂并容易出错的任务。make工具可以帮助您管理从多个源代码文件构

建复杂程序的过程。 30.3.2 使用autoconf工具配置代码 make只是Ubuntu中众多编程自动化工具中的一个。其他的工具还包括pm ake(并行的make)、imake(使用构建X11客户端的依赖性驱动的makefile 生成器)、automake以及一个比较新的工具autoconf,它可以创建出能 配置程序源代码包的shell脚本。 可以使用GNU的autoconf工具从分散的源代码中构建出多个Linux程序。 这个工具会创建一个可执行的名为configure的shell脚本,执行它, 会根据目标主机(您的Linux系统)上已安装的软件资源,也就是依赖性 (例如编程工具、库以及相关的工具)自动地检查和裁剪客户端的构建。 很多以源代码形式下载的Linux命令和X环境的图形界面客户端都包含 有configure脚本。 它可以配置源代码包、 构建软件,然后安装这个新程 序,root用户可以按下面的形式使用这个脚本(先要解压源代码并切换 到构建程序的目录中): ¥ ./configure ; make ; sudo make install autoconf程序使用了名为configure.in的文件,其中包含有基本的规 则集(ruleset),或宏的设置。configure.in文件是由autoscan命令创 建的。使用configure脚本构建程序还需要一个名为Makefile.in的make file模板。可以手动创建检查依赖性的configure脚本,也可以使用图 形界面的项目开发工具,例如KDE的KDevelop或GNOME的Glade,迅速地 解决复杂的依赖性问题(详见本章后面的“图形界面开发工具”小节)。 30.3.3 使用RCS和CVS管理软件项目 尽管可以使用make管理软件项目,但是较大型的软件项目还需要文档 管理、 源代码控制、 安全以及对开发过程中源代码的改动进行跟踪。 CVS 为这类大型的软件项目管理提供了源代码版本控制工具。可以在Ubuntu DVD上的APT包中找到这个工具。 CVS系统可以跟踪多个版本的文件的修改情况,还可以进行回溯或内部 分叉。它还能预防和解决条目间的冲突,或是多个开发人员对源代码文 件进行的修改。 使用CVS进行源代码控制至少需要用到下面6个cvs命令的选项: ● checkout—— 获取最新版本。 ● update—— 更新其他开发人员对源代码做出的改动。 ●add—— 在cvs记录中添加新文件。 

● import—— 往代码库中添加新的源代码文件。 ● remove—— 从代码库中删除文件。

● commit—— 将改动发布到代码库中。 要注意这些命令还需要您提供其他的一些字段,例如文件名称。 跟踪信息通常包含在单个的控制文件中;每当项目发生变动时,与项 目相对应的文档中的信息都有可能会自动更新。有个名为关键字替换(k eyword substitution)的过程用于实现自动更新。CVS使用的关键字包 括文档顶端的C注释字符串(/* */)。下面展示了一些关键字: ● ¥Author¥—— 最后一个check-in的人的用户名。 ● ¥Date¥—— 最后一次check-in的日期和时间。 ● ¥Id¥—— 跟¥Header¥一样,只是没有完整的路径名。 ● ¥Name¥—— 一个符号名称(详见co手册页)。 ● ¥Revision¥—— 分配的版本号(例如1.1)。 ● ¥State¥—— 文档的状态,例如实验性的就是Exp,已发布的就是R el,稳定版就是Stab。 使用CVS前先要将环境变量¥CVSROOT设为代码库的完整路径以初始化代 码库,然后使用cvs命令的init选项,如下所示: # cvs init 在/usr/share/doc目录下很多的手册页中都能找到CVS的文档,在GNU 信息文档中也有相关的信息。 30.3.4 调试工具 调试是一种科学,也是一种艺术。有时,最简单的工具—— 代码清单 —— 就是最好的调试工具。但是在大部分时候,还是需要使用其他的 调试工具。splint、gprof和gdb就是其中常用的三种。 1. 使用splint检查源代码 splint命令类似于UNIX中传统的lint命令:静态地检查源代码中可能 存在的问题,还有一些其他的功能。即使您的C语言代码符合C语言的标 

准,也能通过编译,但其中还是有可能存在错误。splint会进行多种检 查,并能提供详细的错误信息。例如,这个简单的程序可能可以通过编 译,甚至还能运行: ¥ gcc -o tux tux.c ¥ ./tux 但是splint还是能指出源代码中的一些严重错误: ¥ splint tux.c Splint 3.1.1 17 Feb 2004 tux.c: (in function main) tux.c:2:19: Return value (type int) ignored: putchar(t[++j]

-…… Result returned by function call is not used. If this is intended, can cast result to (void) to eliminate message. (Use -retvalint to inhibit warning) Finished checking 1 code warning 还可以使用splint命令的-strict选项获得一份更详细的报告,如下所 示: ¥ splint -strict tux.c GNU的C语言编译器也支持有详细警告的诊断方式(使用-Wall和-pedant ic选项): ¥ gcc -Wall tux.c tux.c:1: warning: return type defaults to `int' tux.c: In function `main': tux.c:2: warning: implicit declaration of function `putchar' 注意: 若对各种C语言语法检查器感兴趣,请访问 http://www.ibiblio.org/pub/ Linux/devel/lang/c。splint程序是从 lclint发展而来的,在这个网站上也能找到lclint-2.2a-src.tar.gz 文件。 2. 使用gprof跟踪函数时间 使用gprof命令能对程序的时间复杂度进行研究。若程序使用-p标志进 行编译和连接,则在其运行时会自动创建mon.out文件,其中就会有每 个函数的调用频率以及每个函数所耗费的时间。gprof会对这些数据进 行解析,并显示出来。gprof生成的分析报告可以帮助您判断什么地方 是性能瓶颈。使用优化的编译器可以提高程序的速度,但是花点时间使 用gprof的分析结果,并对瓶颈函数做修改能很明显地提高程序的性能。 3. 使用gdb进行符号调试 gdb工具是一个符号调试器。使用-g选项编译程序就会保留一份符号表, 这样就能使用符号调试器跟踪程序中的bug。最基本的使用就是在发生c ore dump(保存有程序崩溃时的内存快照的文件)之后调用gdb,从而获 得堆栈记录。从堆栈记录中可以知道是哪一行代码发生了core dump, 以及该行代码所调用的函数。通常,这就足以诊断出问题了。尽管这并 不是gdb的全部功能。 gdb还提供了一个交互式的调试环境。在程序中调用gdb就能设置断点、

检查变量的值以及监视变量。如果您怀疑某行代码附近有问题,就可以 在这一行设置一个断点,然后运行gdb。一旦程序运行到这一行,就会 中断执行。这时就可以核对变量的值、检查堆栈记录以及观察程序的环 境。还可以单步地运行程序以核对变量。可以在任何时候恢复程序的执 行。通过使用断点,可以发现代码中的很多bug。 ddd(Data Display Debugger)是gdb的图形界面的X窗口接口。 30.4 使用GNU C编译器 如果在安装Ubuntu时选择了安装开发工具包(或是使用synaptic安装), 就已经有了GNU的C编译器(gcc)。GNU C编译器有很多不同的选项,其中 的很多选项都类似于其他UNIX系统上的C和C++编译器。查看gcc的手册 页可以获得完整的选项及其描述的列表。 使用gcc构建C程序可以分为以下几个步骤: ● 首先,C预处理器对文件进行分析。它会连续读取每行代码,包括头 文件,并进行宏替换。 ● 编译器对经过修改的代码进行分析,判断其语法是否正确。在这个 过程中,会建立一个符号表,并创建一个过渡的object文件。除了其他 模块定义的符号之外,例如外部变量,绝大部分的符号都有相应的内 存地址。 ● 最后的完成步骤是链接,将不同的文件和库连接起来,然后对之前 没有解析的符号进行解析从而连接这些文件。 注意: 如果严格地遵守ANSI规则,那么大部分的C程序都可以使用C++编译器 编译。例如,可以使用GNU的C++编译器编译hello.c程序(每个人的第一 个程序)。 通常将文件命名为hello.cc、 hello.C、 hello.c++或hello.cxx 的形式。GNU C++ 编译器可以识别所有的这些名称。 30.5 一个简单的C程序 本节提供了一个简单的例子,演示了如何使用gcc创建一个可执行的Li nux程序。“hello, world”程序(最初是出现在1978年出版的由Brian W. Kernighan和Dennis M. Ritchie编写的The C Programming Langua ge一书中)是Linux中用C编写的最简单的程序之一。 首先使用您喜欢的Linux文本编辑器输入以下文本: main(){ printf("hello, world.\n"); } 完成之后,将其保存为hello.c文件,然后使用gcc编译器系统编译这

个程序,如下所示: ¥ gcc -o hello hello.c 这个命令会将hello.c作为输入,创建一个名为hello的可执行程序。可 以使用下面的命令运行这个程序: ¥ ./hello hello, world. 这个C程序中只有一个名为main()的函数。gcc命令行指定了输出程

序的 名称(使用-o选项)以及输入的源文件hello.c。要注意运行hello程序的 命令,由于这个程序没有安装在通常的命令目录(例如/usr/bin或/usr /local/bin)中,因此需要明确地使用点和斜杠符号运行它。 30.6 图形界面开发工具 Ubuntu中有大量创建X会话应用程序过程中要用到图形界面的界面设计 和开发环境。若您想构建KDE或GNOME的客户端软件,就会发现KDevelop、 Qt Designer以及Glade是非常有用的工具。可以使用这些工具构建交互 式窗口客户端的图形界面框架,还可以为您的程序自动生成构建自定 义界面所需的骨干代码。 30.6.1 使用KDevelop客户端 可以从应用程序菜单启动KDevelop客户端(如图30-1所示),也可以从 终端窗口的命令行将其启动,如下: ¥ kdevelop & 图30-1 KDE的KDevelop是一个Linux下的快速界面设计工具和客户端 构建工具 按下回车,就会运行KDevelop Setup Wizard,只需要几个简短的向导 对话就能建立起稳定的构建环境。此时需要重启kdevelop(从命令行或 是单击桌面面板的Programming菜单中的项目都可以)。然后就会看到KD evelop的主窗口,选择KDevelop的Project菜单,单击New菜单项就能 创建您的项目。 还可以使用向导对话逐步地开始构建您的项目。单击Create按钮,KDev elop会自动生成KDE客户端源代码目录中常见的文件(包括configure脚 本,用于检查依赖性和创建客户端的makefile)。要测试您的客户端程 序,首先单击Build菜单中的Make菜单项(或是按F8)或是单击Excute菜 单项(或按F9),就会自动地构建客户端。可以使用KDevelop创建KDE客 户端、 Konqueror浏览器的插件、 KDE kicker面板上的小程序、 KDE桌面主 题、基于Qt库的客户端甚至是GNOME的程序。

30.6.2 Trolltech的Qt Designer Ubuntu中Trolltech公司的Qt Designer是一个跟KDevelop有关的开发 环境。 可以使用这个程序构建跨平台程序的用户界面。 Designer的界 Qt 面比较复杂,可以绘制窗口、按钮和其他的客户端控件。可以从终端窗 口的命令行启动Qt Designer,如下所示: ¥ designer & 还可以在Programming菜单的More Programming tools菜单中单击它的 菜单项启动这个界面设计环境。Qt Designer的主窗口(如图30-2所示) 提供了可以快速构建和预览图形界面客户端的工具。首先要创建一个保 存项目文件的目录,选择File | New,创建一个新工程。然后选择C++ 项目,并以.pro为结尾的名字进行保存。 图30-2 与KDevelop类似,Trolltech的Qt Designer是一个Linux和X 环境中的 界面设计和客户端构建工具 接下来,可以再次使用File菜单新建文件,但是这次要选择窗口、widg et或是对话框,这取决于您想往您的工程中添加什么图形界面。在设计 完程序的GUI后,可以使用Preview菜单预览您的设计。如果您添加了足 够的必要代码之后,就可以尝试构建这个新客户端。先切换到您的项目 文件夹(使用cd命令),然后使用qmake和make命令,如下所示: ¥ qmake o Makefile myproject.pro ¥ make ¥ ./myproject 30.6.3 GNOME中的开发工具Glade客户端 如果您偏爱GNOME和它的开发工具,在构建程序的骨干时,Glade GTK+ GUI构建器能帮您减少工作时间和工作量。可以使用桌面面板上的Progr amming菜单启动glade-2,也可以从终端窗口的命令行启动glade-2, 如下所示: ¥ glade-2 & 启动Glade之后,就会在您的主目录中创建名为Projects的目录,并且 能看到一个主窗口,以及浮动的Palette和Properties窗口(如图30-3 所示,演示了一个已经在主窗口中添加了日历widget的基本GNOME客户 端)。可以使用Glade的File菜单保存这个空白的项目,然后从Palette 窗口中单击和添加用户界面元素开始构建您自己的客户端。例如,首先 单击Palette窗口中的Gnome按钮,然后单击以创建新客户端的主窗口。 一个有菜单和工具条的窗口就出现了—— 这就是一个新的GNOME客户 端的基本框架! 图30-3 可以使用GNOME Glade客户端创建和预览自定义的GNOME程序 的图形界面 在构建完客户端之后,从Project窗口的File菜单中选择Build Source Code,Glade就会为这个项目创建必要的源代码和脚本。然后,可以通 过在项目的目录中执行autogen.sh脚本构建这个项目的configure脚本, 如下: ¥ ./autogen.sh 与KDevelop的项目类似,在创建好项目之后,就可以配置、构建并安装 您的项目。首先,执行下面的命令: # make install 在使用这些原型开发工具时,还需要进一步地为您的新KDE或GNOME客 户端添加代码以充实它们的行为。 不过kdevelop、 designer和glade可以 帮助您缩短开发时间,减少工作量。可以先使用这些程序创建一个程序 的骨干,然后再仔细地调整您的新客户端用户界面。 Ubuntu和Linux中的相关命令 在Linux中用C或C++编程需要用到很多相关的命令: ar—— GNU的归档开发工具 as—— G

NU的汇编器 autoconf—— GNU的配置脚本生成器 cervisia—— 为CVS项目提供了KDE环境下的图形界面客户端 cvs—— 项目版本控制系统 designer—— Trolltech公司基于Qt库和X开发的图形界面的界面设计 工具 gcc—— GNU的C/C++编译器系统 gdb—— GNU的交互式调试器 glade-2—— 用于构建GTK+客户端的GNOME图形界面开发环境 gprof—— GNU的程序分析器 kdevelop—— 用于构建KDE、GNOME或终端客户端的KDE C/C++图形界面 开发环境 make—— GNU的项目管理命令 patch—— Larry Wall的源代码修补工具

pmake—— BSD的项目管理工具 rcs—— 用于管理项目文档的程序套件 splint—— C语言源代码文件检查器 xmkmf—— 用于生成构建X客户端的本地makefile的shell脚本 30.7 阅读参考 若有兴趣进一步学习C和C++,那么应该看看下面这些书籍: ● Sams Teach Yourself C in 21 Days,Peter Aitken和Bradley Jones著,Sams Publishing出版社出版 ● Sams Teach Yourself C++ for Linux in 21 Days,Jesse Liberty和David B. Horvath著,Sams Publishing出版社出版 ● C How to Program和C++ How to Program,都是Harvey M. Deitel 和Paul J. Deitel编写的,Deitel Associates出版社出版 ● The C Programming Language,Brian W. Kernighan和Dennis M. Ritchie著,Prentice Hall出版社出版 ● The Annotated C++ Reference Manual,Margaret A. Ellis和 Bjarne Stroustrup著,ANSI Base Documen

t类型的文档 ● Programming in ANSI C,Stephen G. Kochan著,Sams Publishing出版社出版 还有一些优秀的网站提供了更丰富的信息: http://gcc.gnu.org/java/compile.html 有很多关于GCC对Java的支 持的信息。 http://www.gnu.org/software/autoconf/autoconf.html 有很多关 于GNU项目的autoconf工具的信息,以及如何构建可移植的软件项目。 http://www.trolltech.com/products/qt/tools.html Trolltech公 司关于Qt Designer的网页,还有很多可以在Ubuntu中使用的自动化编 程工具(包括翻译器)。 http://glade.gnome.org GNOME开发人员的Glade工具的主页。 http://www.kdevelop.org 这个网站有KDE图形开发环境KDevelop项 目的最新版本。

1本文由komavenn贡献

pdf文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。

第30章 Ubuntu中的C/C++ 编程工具

学习诸如C或C++之类的计算机语言要比学习shell脚本编程更加复杂和 困难。您必须学会在编程时考虑计算机的资源、计算机工作的方式,还 要考虑操作系统、语法以及各种类型的开发工具,而不是仅仅考虑那些 面向用户的命令。 当然,学习C或C++的主要好处就是Linux以及与其相关的软件几乎都是 开源的—— 若某个程序不符合您的要求,就可以自己动手修改。几乎 在所有的Linux程序的源代码中,都可以从程序员的注释中找到很多隐 藏的文档。 本章关注的是Linux中与C和C++相关的工具,例如GNU C 编译器集(GNU C Compiler Collection,GCC),以及GNOME和K桌面环境(K Desktop E nvironment,KDE)中的典型开发环境。本章还介绍了一些编译C和C++程 序的命令,以及相关编程工具的信息。 30.1 Linux中的C编程 C语言是与诸如Linux、 BSD等类UNIX的操作系统联系最紧密的编程语言。 从上世纪70年代以来,大量的UNIX操作系统和应用程序都是用C编写的。 因为C语言不依赖于任何特定的硬件架构。换句话说就是,UNIX中的大 部分代码都不知道也不关心它实际是运行在哪台计算机上的。与机器相 关的功能被隔离在了UNIX内核的少部分模块中,因此将C语言编写的程 序移植到不同的计算机架构上是非常容易的。 C是编译型语言,这意味着C源代码先由预处理器进行分析,接着转换 成汇编语言,然后再转换成适应于目标CPU的机器指令。接下来,汇编 器(assembler)会根据这些机器指令创建可执行文件或是object文件。 最后,在外部程序连接器(linker)的支持下将object文件连接起来。C 程序存储在扩展名为.c的文本文件中,通常至少包含一个程序或是函 数,例如main(),除非这是个包含有共享的变量或其他数据的定义或 声明的include文件(扩展名为.h,也称之为头文件)。函数是完成C程序 所需要完成的任务的每一步的命令。 注意:

Linux之所以能在不同的CPU上运行,就是因为其内核基本上是用C编写 的。关于从源代码编译Linux内核的更多信息,请参见第35章。 30.1.1 C++编程 C++是C的面向

对象的扩展。由于C++是C的超集,因此C++编译器可以正 确地编译C程序,也可以使用C++编写非面向对象的代码。反之是行不通 的:C编译器不能编译C++代码。 C++通过提供面向对象设计和编码所必需的一些功能,对C的能力进行 扩展。C++还支持用于特定数据结构的函数,而且这并不需要使用基于 类的面向对象技术。正是由于这些因素,C++使得当前的UNIX正在逐步 地转向面向对象的开发方式。 gcc提供了对C++编程的支持,可以使用g++编译C++代码。KDE中还有一 些在构建KDE程序时可使用的C++工具,例如moc(Meta Object Compile r)。 30.1.2 Linux C/C++编程入门 编写Linux下的C程序要求您知道C语言的语法,对Linux内核的接口(使 用1100个不同的C函数中的一个或多个,也就是系统调用)要有所了解, 还要知道如何使用Linux编程工具,例如gcc和make。在本章中,您将会 学会所有的这些概念和使用方法。 首先,要确定您已经安装了所有开发项目所需的软件开发包(可能要用 到synaptic客户端;详见第7章)。基本的开发软件需要安装50多个不同 的软件包以及110MB硬盘空间。如果您计划为Linux内核构建程序,那还 需要安装内核开发包,以及180MB的存储空间(这还没有包括构建新内 核时所需的临时磁盘空间)。 您还应该熟悉某种优秀的文本编辑器。尽管GNU鼓吹者使用emacs编辑环 境编写、编辑和编译程序,但是还有很多其他的开发人员只是使用诸如 vi或nano之类的编辑器编辑源代码,然后使用命令行运行开发工具。 在为GNOME或KDE编程时,您可能会发觉使用图形界面的开发项目管理 工具是最方便的,例如GNOME的Glade(GTK+用户界面构建器,glade-2)、 Trolltech的Qt Designer(设计器)、KDE的KDevelop(KDE开发环境,kde velop)。这些客户端使得您可以使用图形界面的绘图工具创建程序的界 面,从而将您从客户端的界面设计中解放出来。它们还可以自动地为程 序生成所有必要的工程和源代码文件。详见本章稍后的“图形界面开发 工具”小节。 30.1.3 编程的步骤 很多Linux的C程序员都是为解决现实问题而开始编写程序的,例如可

以从蜂窝电话或手持电脑下载电话号码或其他数据的简单命令行程序。 很多初学者最开始都是学习Linux文本编辑器的使用,搜索所需的软件 教程,阅读文档,浏览Linux源代码,学习如何运行编译器(例如gcc, 本章稍后会做讨论),然后才是完整的编程过程:编辑、 编译、 执行和测 试。 本章中接下来的小节会讨论Ubuntu中的一些必需或有用的软件工具。您 还会看到如何创建、编译和运行一个简单的C程序,以及如何使用一些 图形界面的界面设计工具(例如Glade、 Designer、 KDevelop)以缩短开发 图形程序的用户界面的时间。这些工具可以减少完成这些工作所需的时 间和工作量,使得您可以专注于新程序的核心功能。 30.2 C/C++语言的基本元素 C编程语言有它自己的语法—— 一个指定的形式,所有的命令和程序 都得照这个形式的要求编写才能被计算机系统理解和处理。在开始C编 程之前,您需要了解以下这些语法: ● 注释—— 注释是说明代码和描述程序的语句。注释是以某些特定的 字符开始和结束的,例如/*和*/,这就告诉编译器忽略这两者之间的 内容。 ● 标识符—— 您需要知道如何正确地命名常量、变量以及子程序,例 如&a、*p、my_func()。 ● 关键字—— 关键字就是C语言中有特殊含义的单词,这些单词是为 命令或参数保留的。 例如:关键字int、 char和struct用于声明变量、 数 组和结构。 ● 常量—— 您需要知道如何使用诸如整数、 浮点数、 字符、 字符串之类 的常量,例如10、 “hello”,还需要知道如何定义符号常量,例如# a、 define NULL 0。 ● 语法概念—— 您需要知道如何在表达式中使用操作符,操作符用 于计算、获取或分配值,例如for (;;)和line[n++] = a;。 您还应该对所使用的编程工具做进一步的了解,知道这个工具的特点 和功能,例如GNU的gcc编译器系统(详见本章后面的“使用GNU C编译 器”小节,其中对gcc做了大致的介绍)。 30.3 Ubuntu中的C语言编程项目管理工具 Ubuntu中有很多可以简化C/C++编程的工具。这些工具可以创建程序(编 辑器),编译程序(gcc),创建库(ar),控制源代码(Revision Control System(RCS)和Concurrent Versions System(CVS)),自动构建程序(m ake),对程序进行调试(gdb和ddd),以及查找性能瓶颈(gprof)。

接下来的小节会介绍一些Ubuntu中的编程及项目管理工具。本书附带的 光盘中包含有这些工具,这有助于提高软件开发项目的自动化程度。如 果您之前有UNIX经验,对这些程序中的绝大部分都应该感到熟悉,因 为它们都是UNIX程序员常用的工具。 30.3.1 使用make构建程序 使用make命令可以自动编译和安装C程序,并且其使用非

常简单。若您 想建立自己的自动化编译,就需要学习make的特殊语法;接下来的小 节会带您学习make的基本设置。 1. 使用Makefile make命令是根据makefile自动地对程序进行编译和更新的。makefile其 实就是一个文本文件,其中包含有传给预处理器、编译器、汇编器和连 接器的选项。除了这些东西,makefile还规定了代码模块所需要编译的 源代码文件(以及编译器命令行)和编译程序所需要的代码模块—— 这 种机制被称为依赖性检查。 make命令最美妙的地方就在于它的灵活性。可以通过编写一个简单的ma kefile来使用make,也可以编写一个包含有大量宏、规则或命令,用于 单个目录或是整个文件系统,可以构建程序、更新系统,甚至是管理文 档的复杂的makefile。make命令还可以与其他的程序协同工作,包括文 本处理系统,例如TeX。 使用make编译、构建和安装软件包只需要使用一个命令,如下所示: # make install 可以使用默认的makefile(通常文件名为Makefile,大写M),或是使用 make的-f选项指定makefile,例如下面的MyMakeFile: # make -f MyMakeFile 还可以使用其他的选项,取决于makefile的内容。 2. 使用宏和Makefile目标 使用make的宏可以提高程序的可移植性。使用宏能让其他操作系统的用 户便捷地使用本地的值配置程序,例如所需的软件工具的名称和位置, 或是路径名。在下面的例子中,宏定义了编译器的名称(CC)、安装程序 (INS)、 程序安装的位置(INSDIR)、 连接器查找库的位置(LIBDIR)、 所需 的库的名称(LIBS)、源代码文件(SRC)、中间的object代码文件(OBS)以 及最终程序的名称(PROG): # a sample makefile for a skeleton program CC= gcc INS= install

INSDIR = /usr/local/bin LIBDIR= -L/usr/X11R6/lib LIBS= -lXm -lSM -lICE -lXt -lX11 SRC= skel.c OBJS= skel.o PROG= skel skel: ¥{OBJS} ¥{CC} -o ¥{PROG} ¥{SRC} ¥{LIBDIR} ¥{LIBS}

install: ¥{PROG} ¥{INS} -g root -o root ¥{PROG} ¥{INSDIR} 注意: 前面例子中的缩进行是制表符,而不是空格。一定要记住这点!人眼很 难看出其中的差别,但是make可以。您第一次在Linux下构建程序时, 若make报告出让人迷惑的错误,首先要检查的就是您的makefile是不 是使用制表符或是其他正确的格式。 使用前面例子中的makefile,可以使用如下命令构建程序: # make 要构建makefile中的某个组件,可以在命令行中使用目标定义。如果仅 仅是构建这个程序,可以使用make和skel目标,如下所示: # make skel 若对目标对象的元素做了改动,例如源代码文件,make会自动重建目 标。这也是使用make管理开发项目的便捷之处。一步完成程序的构建和 安装,可以指定install目标,如下所示: # make install 大型软件项目的makefile中可能会有很多目标,一些常见的目标如下 所示: ● test—— 对最终的软件运行指定的测试。 ● man—— 处理有man宏的troff文档。 ● clean—— 删除所有现有的object文件。 ● archive—— 清除、归档和压缩整个源代码树。 ● bugreport—— 自动搜集并发送构建的副本或是错误日志的副本。 大型应用程序可以有上百个源代码文件。编译和连接这些程序是件非常 复杂并容易出错的任务。make工具可以帮助您管理从多个源代码文件构

建复杂程序的过程。 30.3.2 使用autoconf工具配置代码 make只是Ubuntu中众多编程自动化工具中的一个。其他的工具还包括pm ake(并行的make)、imake(使用构建X11客户端的依赖性驱动的makefile 生成器)、automake以及一个比较新的工具autoconf,它可以创建出能 配置程序源代码包的shell脚本。 可以使用GNU的autoconf工具从分散的源代码中构建出多个Linux程序。 这个工具会创建一个可执行的名为configure的shell脚本,执行它, 会根据目标主机(您的Linux系统)上已安装的软件资源,也就是依赖性 (例如编程工具、库以及相关的工具)自动地检查和裁剪客户端的构建。 很多以源代码形式下载的Linux命令和X环境的图形界面客户端都包含 有configure脚本。 它可以配置源代码包、 构建软件,然后安装这个新程 序,root用户可以按下面的形式使用这个脚本(先要解压源代码并切换 到构建程序的目录中): ¥ ./configure ; make ; sudo make install autoconf程序使用了名为configure.in的文件,其中包含有基本的规 则集(ruleset),或宏的设置。configure.in文件是由autoscan命令创 建的。使用configure脚本构建程序还需要一个名为Makefile.in的make file模板。可以手动创建检查依赖性的configure脚本,也可以使用图 形界面的项目开发工具,例如KDE的KDevelop或GNOME的Glade,迅速地 解决复杂的依赖性问题(详见本章

后面的“图形界面开发工具”小节)。 30.3.3 使用RCS和CVS管理软件项目 尽管可以使用make管理软件项目,但是较大型的软件项目还需要文档 管理、 源代码控制、 安全以及对开发过程中源代码的改动进行跟踪。 CVS 为这类大型的软件项目管理提供了源代码版本控制工具。可以在Ubuntu DVD上的APT包中找到这个工具。 CVS系统可以跟踪多个版本的文件的修改情况,还可以进行回溯或内部 分叉。它还能预防和解决条目间的冲突,或是多个开发人员对源代码文 件进行的修改。 使用CVS进行源代码控制至少需要用到下面6个cvs命令的选项: ● checkout—— 获取最新版本。 ● update—— 更新其他开发人员对源代码做出的改动。 ●add—— 在cvs记录中添加新文件。 

● import—— 往代码库中添加新的源代码文件。 ● remove—— 从代码库中删除文件。

● commit—— 将改动发布到代码库中。 要注意这些命令还需要您提供其他的一些字段,例如文件名称。 跟踪信息通常包含在单个的控制文件中;每当项目发生变动时,与项 目相对应的文档中的信息都有可能会自动更新。有个名为关键字替换(k eyword substitution)的过程用于实现自动更新。CVS使用的关键字包 括文档顶端的C注释字符串(/* */)。下面展示了一些关键字: ● ¥Author¥—— 最后一个check-in的人的用户名。 ● ¥Date¥—— 最后一次check-in的日期和时间。 ● ¥Id¥—— 跟¥Header¥一样,只是没有完整的路径名。 ● ¥Name¥—— 一个符号名称(详见co手册页)。 ● ¥Revision¥—— 分配的版本号(例如1.1)。 ● ¥State¥—— 文档的状态,例如实验性的就是Exp,已发布的就是R el,稳定版就是Stab。 使用CVS前先要将环境变量¥CVSROOT设为代码库的完整路径以初始化代 码库,然后使用cvs命令的init选项,如下所示: # cvs init 在/usr/share/doc目录下很多的手册页中都能找到CVS的文档,在GNU 信息文档中也有相关的信息。 30.3.4 调试工具 调试是一种科学,也是一种艺术。有时,最简单的工具—— 代码清单 —— 就是最好的调试工具。但是在大部分时候,还是需要使用其他的 调试工具。splint、gprof和gdb就是其中常用的三种。 1. 使用splint检查源代码 splint命令类似于UNIX中传统的lint命令:静态地检查源代码中可能 存在的问题,还有一些其他的功能。即使您的C语言代码符合C语言的标 准,也能通过编译,但其中还是有可能存在错误。splint会进行多种检 查,并能提供详细的错误信息。例如,这个简单的程序可能可以通过编 译,甚至还能运行: ¥ gcc -o tux tux.c ¥ ./tux 但是splint还是能指出源代码中的一些严重错误: ¥ splint tux.c Splint 3.1.1 17 Feb 2004 tux.c: (in function main) tux.c:2:19: Return value (type int) ignored: putchar(t[++j]

-…… Result returned by function call is not used. If this is intended, can cast result to (void) to eliminate message. (Use -retvalint to inhibit warning) Finished checking 1 code warning 还可以使用splint命令的-strict选项获得一份更详细的报告,如下所 示: ¥ splint -strict tux.c GNU的C语言编译器也支持有详细警告的诊断方式(使用-Wall和-pedant ic选项): ¥ gcc -Wall tux.c tux.c:1: warning: return type defaults to `int' tux.c: In function `main': tux.c:2: warning: implicit declaration of function `putchar' 注意: 若对各种C语言语法检查器感兴趣,请访问 http://www.ibiblio.org/pub/ Linux/devel/lang/c。splint程序是从 lclint发展而来的,在这个网站上也能找到lclint-2.2a-src.tar.gz 文件。 2. 使用gprof跟踪函数时间 使用gprof命令能对程序的时间复杂度进行研究。若程序使用-p标志进 行编译和连接,则在其运行时会自动创建mon.out文件,其中就会有每 个函数的调用频率以及每个函数所耗费的时间。gprof会对这些数据进 行解析,并显示出来。gprof生成的分析报告可以帮助您判断什么地方 是性能瓶颈。使用优化的编译器可以提高程序的速度,但是花点时间使 用gprof的分析结果,并对瓶颈函数做修改能很明显地提高程序的性能。 3. 使用gdb进行符号调试 gdb工具是一个符号调试器。使用-g选项编译程序就会保留一份符号表, 这样就能使用符号调试器跟踪程序中的bug。最基本的使用就是在发生c ore dump(保存有程序崩溃时的内存快照的文件)之后调用gdb,从而获 得堆栈记录。从堆栈记录中可以知道是哪一行代码发生了core dump, 以及该行代码所调用的函数。通常,这就足以诊断出问题了。尽管这并 不是gdb的全部功能。 gdb还提供了一个交互式的调试环境。在程序中调用gdb就能设置断点、

检查变量的值以及监视变量。如果您怀疑某行代码附近有问题,就可以 在这一行设置一个断点,然后运行gdb。一旦程序运行到这一行,就会 中断执行。这时就可以核对变量的值、检查堆栈记录以及观察程序的环 境。还可以单步地运行程序以核对变量。可以在任何时候恢复程序的执 行。通过使用断点,可以发现代码中的很多bug。 ddd(Data Display Debugger)是gdb的图形界面的X窗口接口。 30.4 使用GNU C编译器 如果在安装Ubuntu时选择了安装开发工具包(或是使用synaptic安装), 就已经有了GNU的C编译器(gcc)。GNU C编译器有很多不同的选项,其中 的很多选项都类似于其他UNIX系统上的C和C++编译器。查看gcc的手册 页可以获得完整的选项及其描述的列表。 使用gcc构建C程序可以分为以下几个步骤: ● 首先,C预处理器对文件进行分析。它会连续读取每行代码,包括头 文件,并进行宏替换。 ● 编译器对经过修改的代码进行分析,判断其语法是否正确。在这个 过程中,会建立一个符号表,并创建一个过渡的object文件。除了其他 模块定义的符号之外,例如外部变量,绝大部分的符号都有相应的内 存地址。 ● 最后的完成步骤是链接,将不同的文件和库连接起来,然后对之前 没有解析的符号进行解析从而连接这些文件。 注意: 如果严格地遵守ANSI规则,那么大部分的C程序都可以使用C++编译器 编译。例如,可以使用GNU的C++编译器编译hello.c程序(每个人的第一 个程序)。 通常将文件命名为hello.cc、 hello.C、 hello.c++或hello.cxx 的形式。GNU C++ 编译器可以识别所有的这些名称。 30.5 一个简单的C程序 本节提供了一个简单的例子,演示了如何使用gcc创建一个可执行的Li nux程序。“hello, world”程序(最初是出现在1978年出版的由Brian W. Kernighan和Dennis M. Ritchie编写的The C Programming Langua ge一书中)是Linux中用C编写的最简单的程序之一。 首先使用您喜欢的Linux文本编辑器输入以下文本: main(){ printf("hello, world.\n"); } 完成之后,将其保存为hello.c文件,然后使用gcc编译器系统编译这

个程序,如下所示: ¥ gcc -o hello hello.c 这个命令会将hello.c作为输入,创建一个名为hello的可执行程序。可 以使用下面的命令运行这个程序: ¥ ./hello hello, world. 这个C程序中只有一个名为main()的函数。gcc命令行指定了输出程序的 名称(使用-o选项)以及输入的源文件hello.c。要注意运行hello程序的 命令,由于这个程序没有安装在通常的命令目录(例如/usr/bin或/usr /local/bin)中,因此需要明确地使用点和斜杠符号运行它。 30.6 图形界面开发工具 Ubuntu中有大量创建X会话应用程序过程中要用到图形界面的界面设计 和开发环境。若您想构建KDE或GNOME的客户端软件,就会发现KDevelop、 Qt Designer以及Glade是非常有用的工具。可以使用这些工具构建交互 式窗口客户端的图形界面框架,还可以为您的程序自动生成构建自定 义界面所需的骨干代码。 30.6.1 使用KDevelop客户端 可以从应用程序菜单启动KDevelop客户端(如图30-1所示),也可以从 终端窗口的命令行将其启动,如下: ¥ kdevelop & 图30-1 KDE的KDevelop是一个Linux下的快速界面设计工具和客户端 构建工具 按下回车,就会运行KDevelop Setup Wizard,只需要几个简短的向导 对话就能建立起稳定的构建环境。此时需要重启kdevelop(从命令行或 是单击桌面面板的Programming菜单中的项目都可以)。然后就会看到KD evelop的主窗口,选择KDevelop的Project菜单,单击New菜单项就能 创建您的项目。 还可以使用向导对话逐步地开始构建您的项目。单击Create按钮,KDev elop会自动生成KDE客户端源代码目录中常见的文件(包括configure脚 本,用于检查依赖性和创建客户端的makefile)。要测试您的客户端程 序,首先单击Build菜单中的Make菜单项(或是按F8)或是单击Excute菜 单项(或按F9),就会自动地构建客户端。可以使用KDevelop创建KDE客 户端、 Konqueror浏览器的插件、 KDE kicker面板上的小程序、 KDE桌面主 题、基于Qt库的客户端甚至是GNOME的程序。

30.6.2 Trolltech的Qt Designer Ubuntu中Trolltech公司的Qt Designer是一个跟KDevelop有关的开发 环境。 可以使用这个程序构建跨平台程序的用户界面。 Designer的界 Qt 面比较复杂,可以绘制窗口、按钮和其他的客户端控件。可以从终端窗 口的命令行启动Qt Designer,如下所示: ¥ designer & 还可以在Programming菜单的More Programming tools菜单中单击它的 菜单项启动这个界面设计环境。Qt Designer的主窗口(如图30-2所示) 提供了可以快速构建和预览图形界面客户端的工具。首先要创建一个保 存项目文件的目录,选择File | New,创建一个新工程。然后选择C

++ 项目,并以.pro为结尾的名字进行保存。 图30-2 与KDevelop类似,Trolltech的Qt Designer是一个Linux和X 环境中的 界面设计和客户端构建工具 接下来,可以再次使用File菜单新建文件,但是这次要选择窗口、widg et或是对话框,这取决于您想往您的工程中添加什么图形界面。在设计 完程序的GUI后,可以使用Preview菜单预览您的设计。如果您添加了足 够的必要代码之后,就可以尝试构建这个新客户端。先切换到您的项目 文件夹(使用cd命令),然后使用qmake和make命令,如下所示: ¥ qmake o Makefile myproject.pro ¥ make ¥ ./myproject 30.6.3 GNOME中的开发工具Glade客户端 如果您偏爱GNOME和它的开发工具,在构建程序的骨干时,Glade GTK+ GUI构建器能帮您减少工作时间和工作量。可以使用桌面面板上的Progr amming菜单启动glade-2,也可以从终端窗口的命令行启动glade-2, 如下所示: ¥ glade-2 & 启动Glade之后,就会在您的主目录中创建名为Projects的目录,并且 能看到一个主窗口,以及浮动的Palette和Properties窗口(如图30-3 所示,演示了一个已经在主窗口中添加了日历widget的基本GNOME客户 端)。可以使用Glade的File菜单保存这个空白的项目,然后从Palette 窗口中单击和添加用户界面元素开始构建您自己的客户端。例如,首先 单击Palette窗口中的Gnome按钮,然后单击以创建新客户端的主窗口。 一个有菜单和工具条的窗口就出现了—— 这就是一个新的GNOME客户 端的基本框架! 图30-3 可以使用GNOME Glade客户端创建和预览自定义的GNOME程序 的图形界面 在构建完客户端之后,从Project窗口的File菜单中选择Build Source Code,Glade就会为这个项目创建必要的源代码和脚本。然后,可以通 过在项目的目录中执行autogen.sh脚本构建这个项目的configure脚本, 如下: ¥ ./autogen.sh 与KDevelop的项目类似,在创建好项目之后,就可以配置、构建并安装 您的项目。首先,执行下面的命令: # make install 在使用这些原型开发工具时,还需要进一步地为您的新KDE或GNOME客 户端添加代码以充实它们的行为。 不过kdevelop、 designer和glade可以 帮助您缩短开发时间,减少工作量。可以先使用这些程序创建一个程序 的骨干,然后再仔细地调整您的新客户端用户界面。 Ubuntu和Linux中的相关命令 在Linux中用C或C++编程需要用到很多相关的命令: ar—— GNU的归档开发工具 as—— GNU的汇编器 autoconf—— GNU的配置脚本生成器 cervisia—— 为CVS项目提供了KDE环境下的图形界面客户端 cvs—— 项目版本控制系统 designer—— Trolltech公司基于Qt库和X开发的图形界面的界面设计 工具 gcc—— GNU的C/C++编译器系统 gdb—— GNU的交互式调试器 glade-2—— 用于构建GTK+客户端的GNOME图形界面开发环境 gprof—— GNU的程序分析器 kdevelop—— 用于构建KDE、GNOME或终端客户端的KDE C/C++图形界面 开发环境 make—— GNU的项目管理命令 patch—— Larry Wall的源代码修补工具

pmake—— BSD的项目管理工具 rcs—— 用于管理项目文档的程序套件 splint—— C语言源代码文件检查器 xmkmf—— 用于生成构建X客户端的本地makefile的shell脚本 30.7 阅读参考 若有兴趣进一步学习C和C++,那么应该看看下面这些书籍: ● Sams Teach Yourself C in 21 Days,Peter Aitken和Bradley Jones著,Sams Publishing出版社出版 ● Sams Teach Yourself C++ for Linux in 21 Days,Jesse Liberty和David B. Horvath著,Sams Publishing出版社出版 ● C How to Program和C++ How to Program,都是Harvey M. Deitel 和Paul J. Deitel编写的,Deitel Associates出版社出版 ● The C Programming Language,Brian W. Kernighan和Dennis M. Ritchie著,Prentice Hall出版社出版 ● The Annotated C++ Reference Manual,Margaret A. Ellis和 Bjarne Stroustrup著,ANSI Base Documen

t类型的文档 ● Programming in ANSI C,Stephen G. Kochan著,Sams Publishing出版社出版 还有一些优秀的网站提供了更丰富的信息: http://gcc.gnu.org/java/compile.html 有很多关于GCC对Java的支 持的信息。 http://www.gnu.org/software/autoconf/autoconf.html 有很多关 于GNU项目的autoconf工具的信息,以及如何构建可移植的软件项目。 http://www.trolltech.com/products/qt/tools.html Trolltech公 司关于Qt Designer的网页,还有很多可以在Ubuntu中使用的自动化编 程工具(包括翻译器)。 http://glade.gnome.org GNOME开发人员的Glade工具的主页。 http://www.kdevelop.org 这个网站有KDE图形开发环境KDevelop项 目的最新版本。

ubuntu linux操作系统快捷键说明

ubuntu linux操作系统快捷键说明 娇滴滴假发 通用快捷键: F1+Alt 类似windows下面的Win键在GNOME中就是打开“应用程序”菜单(Applications Menu) F2+Alt 类似windows下面Win+R 是运行程序的快捷键 Ctrl+Alt+D 类似windows下面的Win+D 是显示桌面的快捷键 Ctrl+Alt+L 启动屏幕保护程序? Alt+Tab 切换程序,同windows下的定义一样 Print Screen 屏幕抓图(整个屏幕) Alt+Print Screen 当前窗口抓图 窗口操作快捷键: Alt+F4 关闭窗口 Alt+F5 取消最大化 Alt+F7 移动窗口的 Alt+F8 改变大小 Alt+F9 最小化当前窗口 Alt+F10 最大化当前窗口 Alt+空格切换输入法

程序中常用的快捷键: Ctrl+N 新建 Ctrl+X 剪切 Ctrl+C 复制 Ctrl+V 粘贴 Ctrl+Z 撤销 Ctrl+S 保存 Ubuntu操作基本快捷键: 打开主菜单= Alt + F1 运行= Alt + F2 显示桌面= Ctrl + Alt + d 最小化当前窗口= Alt + F9 最大化当前窗口= Alt + F10 关闭当前窗口= Alt + F4 截取全屏= Print Screen 截取窗口= Alt + Print Screen 默认特殊快捷键: 展示所有窗口程序= F10 展示当前窗口最上层程序= F11 展示当前窗口所有程序= F12

切换窗口= Alt + Tab 旋转3D桌面= Ctrl + Alt + 左/右箭头(也可以把鼠标放在标题栏或桌面使用滚轮切换)旋转3D桌面(活动窗口跟随)= Ctrl + Shift + Alt + 左/右箭头 手动旋转3D桌面= Ctrl + Alt + 左键单击并拖拽桌面空白处 窗口透明/不透明= possible with the “transset” utility or Alt + 滚轮 放大一次= 超级键+ 右击 手动放大= 超级键+ 滚轮向上 手动缩小= 超级键+ 滚轮向下 移动窗口= Alt + 左键单击 移动窗口时贴住边框= 左键开始拖动后再Ctrl + Alt 调整窗口大小= Alt + 中击 Bring up the window below the top window = Alt + middle-click * 动态效果减速= Shift + F10 * 水纹= 按住Ctrl+超级键 * 雨点= Shift-F9 * 桌面展开=Ctrl + Alt + 下箭头,然后按住Ctrl + Alt 和左/右箭头选择桌面 Ubuntu Gnome的桌面技巧: ===键盘类=== 1.先同时按住Alt + Ctrl 键,再按键盘上的左右光标键可以切换工作区 2.web时按"/" 键等于查找功能,桌面或者目录时按" /" 等于"打开.." 3.当前目录下快速文件(夹)定位, 直接输入文件(夹)名字

手把手教你在Vmware中安装Ubuntu

1.点击“Custom(自定义)”

2.无需选择,直接Next(上面是选Workstation版本的兼容性的,这里默认为当前版本8.0,之前版本的不同在于Limitations(局限),如内存更少,不支持HD Audio等)

3.选择“I will install the operating system later” 这里无严格要求的同学,是可以选择第二项“Installer disc image file(ios)”的,之后会VMware会自动得知你的iso是Linux(Ubuntu),只要求你输入Full name,和用户名密码等简单的用户设定,但是这是一个Easy install,如VMware原文所说“When the New Virtual Wizard detects an operating system that supports Easy Install,the wizard prompts you for information about the guest operating system.After the virtual machine is created,the guest operating system installation is automated and VMware Tools is installed.”我觉得是因为这个OS的自动安装,不完全,导致一些核心命令无法使用、无反应等一些问题。所以有更高要求的同学,不能选这项,需要完全、自定义的安装。

5.设置虚拟机名称(即每次启动VMware左上方显示的名字),之后选择你想的在WIN7里的安装路径(默认在C盘,很不方便)。

ubuntu-x86_64虚拟机构建方法总结

ubuntu-x86_64虚拟机构建 1 创建虚拟机 1.1 创建虚拟磁盘 qemu支持多种格式的虚拟磁盘文件格式,使用命令qemu-img --help可以查看帮助以及支持的磁盘文件格式。本次使用qemu-img创建两个虚拟磁盘文件,一个用来安装ubuntu16.04操作系统,一个用来挂载到home目录。 mkdir -p /home/toolchain/vm/ubuntu16.04 cd /home/toolchain/vm/ubuntu16.04 # 在此磁盘文件上安装ubuntu16.04操作系统 qemu-img create -f qcow2 ubuntu1604.qcow2 20g # 因为要经常在其上编译源代码,所以分配大一点 qemu-img create -f qcow2 sdb.qcow2 200g 1.2 编辑启动脚本 脚本内容 #!/bin/sh # -smp 模拟多核系统 -m 模拟4g内存 /usr/local/qemu/bin/qemu-system-x86_64 -smp 4 -m 4096 \ # -hda -hdb 模拟两个磁盘,并指定使用的虚拟磁盘文件 -hda ubuntu1604.qcow2 \ -hdb sdb.qcow2 \ # -cdrom 模拟光驱,并指定光盘镜像文件 -cdrom mini.iso \ # 指定虚拟机从哪引导:软盘(a),硬盘(c),光驱(d),网络(n) -boot c \ # qemu自带VNC服务器,指定此参数,可以远程通过vnc客户端访问此虚拟机,默认端口:5900 -vnc 192.168.30.50:0 \ # 配置网卡类型,及主机到客户机的端口映射:主机1604端口映射到客户机22端口 -net nic,model=e1000 -net user,hostfwd=tcp::1604-:22 \ # 设置虚拟机显卡类型,以及启动硬件加速,可以在性能上接近真机 -vga vmware -machine accel=kvm -enable-kvm 2 系统安装 系统安装时,需要修改一下脚本,使其从光盘启动,进行安装。 -boot d \ 系统安装时,因为此时还没有sshd远程登录服务,只能使用vnc客户端进行连接,在

ubuntu实验操作

Ubuntu的基本操作 实验目的 1.对Ubuntu操作系统有初步了解 2.掌握利用命令操作的方法 实验原理 1.Ubuntu简介 Ubuntu 是基于Debian GNU/Linux,支持x86、amd64(即x64)和ppc架构,由全球化的专业开发团队(Canonical Ltd)打造的开源GNU/Linux操作系统。 2.Ubuntu的基本命令 本实验需要用到命令行操作对文件进行操作、添加用户等,因此需要用到相关的命令。 命令行就是基于成行的命令的用户界面。您也可称其为一个文本化指令序列处理器。 ▲ls:这个命令将会列出你当前所在目录里的所有文件和子目录列表; ls命令默认状态下将按首字母升序列出你当前文件夹下面的所有内容,但这样直接运行所得到的信息也是比较少的,通常它可以结合以下这些参数运行以查询更多的信息: ?ls /将列出根目录'/'下的文件清单.如果给定一个参数,则命令行会把该参数当作命令行的工作目录。换句话说,命令行不再以当前目录为工作目录。 ?ls -l将给你列出一个更详细的文件清单. ?ls -a将列出包括隐藏文件(以.开头的文件)在内的所有文件. ?ls -h将以KB/MB/GB的形式给出文件大小,而不是以纯粹的Bytes. ▲进入其他目录(用命令cd) ▲cat这个命令可以用来在终端上显示txt文本文件的内容。 ▲首先我们通过ls命令查询可知当前目下有两个文件和一个文件夹; ?你可以用参数-p来让系统显示某一项的类型,比如是文件/文件夹/快捷链接等等; ?接下来我们用rm -i尝试删除文件,-i参数是让系统在执行删除操作前输出一条确认提示;i(interactive)也就是交互性的意思; ?当我们尝试用上面的命令去删除一个文件夹时会得到错误的提示,因为删除文件夹必须使用-R(recursive,循环)参数

实验1:基于虚拟机的Linux操作系统安装(Ubuntu)

实验报告1 课程名称:Linux程序设计实验名称:基于虚拟机的Linux操作系统安装 学生姓名:班级:学号: 指导老师:_ 成绩:___________ 一、实验目的 本实验主要内容是Vmware虚拟软件和Linux系统的安装,Vmware是一款功能相当强大的虚拟软件。它可以虚拟一台计算机的硬件,如虚拟CPU、内存、硬盘、网卡、串口、USB接口等等;通过Vmware虚拟软件可以实现在Windows系统下运行Linux系统,当然它也支持Windows系统,而且可以与Windows系统进行交互,非常人性化。 二、实验内容 1.在Windows环境下安装Vmware虚拟机。 2.在运行虚拟机后,安装Linux操作系统。 3.启动Linux操作系统。 三、实验设备 1.PC操作系统WinXP或者Win7。 2.虚拟机软件。 3.Linux镜像文件。 四、实验步骤 1.打开虚拟机,点击菜单上的“文件”,选择新建虚拟机,如下图所示: 注释:这里选择自定义安装,点击下一步。 2.虚拟机版本选最新版本,然后点击下一步,如下图:

3.选择要安装的Ubuntu1 4.04的系统镜像文件,如下图: 4.点击下一步,

注意:此处填入登录用的用户名密码。 5.点击下一步,这个地方选择虚拟机文件存放的位置,如下图: 6.点击下一步,根据电脑配置来选择,如下图: 7.点击下一步,此处选择Ubuntu虚拟机的内存大小,选择合适的大小,如下图:

8.这里默认选择NAT,根据自己电脑的情况来决定,如下图: 9.下一步,这里选择默认,如下图:

10.下一步,这里也选择默认即可,如下图: 11.这里选择创建虚拟磁盘,如下图:

linux 基本操作命令行

linux的命令操作 1、日常操作命令 **查看当前所在的工作目录 pwd **查看当前系统的时间 date **查看有谁在线(哪些人登陆到了服务器) who 查看当前在线 last 查看最近的登陆历史记录 2、文件系统操作 ** ls / 查看根目录下的子节点(文件夹和文件)信息 ls -al -a是显示隐藏文件 -l是以更详细的列表形式显示 **切换目录 cd /home **创建文件夹 mkdir aaa 这是相对路径的写法 mkdir -p aaa/bbb/ccc mkdir /data 这是绝对路径的写法 **删除文件夹 rmdir 可以删除空目录 rm -r aaa 可以把aaa整个文件夹及其中的所有子节点全部删除 rm -rf aaa 强制删除aaa **修改文件夹名称 mv aaa angelababy **创建文件 touch somefile.1 创建一个空文件 echo "i miss you,my baby" > somefile.2 利用重定向“>”的功能,将一条指令的输出结果写入到一个文件中,会覆盖原文件内容 echo "huangxiaoming ,gun dan" >> somefile.2 将一条指令的输出结果追加到一个文件中,不会覆盖原文件内容 用vi文本编辑器来编辑生成文件 ******最基本用法 vi somefile.4

1、首先会进入“一般模式”,此模式只接受各种快捷键,不能编辑文件内容 2、按i键,就会从一般模式进入编辑模式,此模式下,敲入的都是文件内容 3、编辑完成之后,按Esc键退出编辑模式,回到一般模式; 4、再按:,进入“底行命令模式”,输入wq命令,回车即可 ******一些常用快捷键 一些有用的快捷键(在一般模式下使用): a 在光标后一位开始插入 A 在该行的最后插入 I 在该行的最前面插入 gg 直接跳到文件的首行 G 直接跳到文件的末行 dd 删除行,如果 5dd ,则一次性删除光标后的5行 yy 复制当前行, 复制多行,则 3yy,则复制当前行附近的3行 p 粘贴 v 进入字符选择模式,选择完成后,按y复制,按p粘贴 ctrl+v 进入块选择模式,选择完成后,按y复制,按p粘贴 shift+v 进入行选择模式,选择完成后,按y复制,按p粘贴 查找并替换(在底行命令模式中输入) %s/sad/88888888888888 效果:查找文件中所有sad,替换为88888888888888 /you 效果:查找文件中出现的you,并定位到第一个找到的地方,按n可以定位到下一个匹配位置(按N定位到上一个) 3、文件权限的操作 ****linux文件权限的描述格式解读 drwxr-xr-x (也可以用二进制表示 111 101 101 --> 755) d:标识节点类型(d:文件夹 -:文件 l:链接) r:可读 w:可写 x:可执行 第一组rwx:表示这个文件的拥有者对它的权限:可读可写可执行 第二组r-x:表示这个文件的所属组对它的权限:可读,不可写,可执行 第三组r-x:表示这个文件的其他用户(相对于上面两类用户)对它的权限:可读,不可写,可执行 ****修改文件权限 chmod g-rw haha.dat 表示将haha.dat对所属组的rw权限取消 chmod o-rw haha.dat 表示将haha.dat对其他人的rw权限取消 chmod u+x haha.dat 表示将haha.dat对所属用户的权限增加x 也可以用数字的方式来修改权限 chmod 664 haha.dat 就会修改成 rw-rw-r--

UbuntuLinux操作系统第2版(微课版)—教学大纲

《Ubuntu Linux操作系统》课程教学大纲 学分: 4 学时:48 适用专业: 高职高专类计算机专业 一、课程的性质与任务 课程的性质: 本课程是为计算机专业学生开设的课程。课程安排在第学期。 课程的任务: 通过本课程的学习,使学生熟悉Linux操作系统的基本操作,掌握Linux操作系统的配置管理、软件使用和编程环境部署。本课程将紧密结合实际,以首选的Linux桌面系统Ubuntu 为例讲解操作系统的使用和配置,为学生今后进行系统管理运维、软件开发和部署奠定基础。整个课程按照从基础到应用,从基本功能到高级功能的逻辑进行讲授,要求学生通过动手实践来掌握相关的技术操作技能。 前导课程: 《计算机原理》、《Windows操作系统》。 后续课程: 《Linux应用开发》 二、教学基本要求 理论上,要求学生掌握Ubuntu Linux操作系统的基础知识,包括配置管理、桌面应用、编程和软件开发环境。 技能上,要求学生能掌握Ubuntu Linux操作系统的配置方法和使用技能,涵盖系统安装和基本使用、图形界面与命令行、用户与组管理、文件与目录管理、磁盘存储管理、软件包管理、系统高级管理、桌面应用、Shell编程、C/C++编程、Java与Android应用开发、LAMP 平台与PHP、Python、Node.js开发环境部署,以及Ubuntu服务器安装与管理。 培养的IEET核心能力: ?具备系统管理方向的系统工程师的工程能力:掌握Linux配置管理和运维,包括用 户与组管理、文件与目录管理、磁盘存储管理、软件包管理、系统高级管理、服务器安装与管理。 ?具备应用开发工程师的开发环境部署能力,包括Shell编程、C/C++编程、Java与 Android应用开发、LAMP平台与PHP、Python、Node.js开发环境的部署和流程。 ?基本职业素养:具有良好的文化修养、职业道德、服务意识和敬业精神;接受企业 的文化;具有较强的语言文字表达、团结协作和社会活动等基本能力;具有基本的英语文档阅读能力,能较熟练地阅读理解Ubuntu Linux的相关英文资料。

vm安装Ubuntu

菜鸟必学图文教你虚拟机安装Ubuntu https://www.360docs.net/doc/fb4094835.html, 2010年10月15日 05:03 中关村在线 作者:中关村在线李欢 第1页:安装前的准备工作 最近国外厂商和国内Linux爱好者都在热议的话题是,Linux有能力挑战Windows的市场地位了。为什么呢?因为最流行的Linux--Ubuntu发布新版本10.10了,它的人机交互界面越来越棒。 但对大部分不了解Linux操作系统的人来说,都还有这样的想法:要重装系统才能玩Ubuntu,我才懒得干呢。Linux初学者说我不会安装咋办呢?针对这些问题,小编借这篇文章,手把手教大家用虚拟机来安装Ubuntu 10.10。 虚拟机的好处大家都知道,它可以安装在Windows平台下模拟真实的电脑环境,不需要重装Windows系统,安全高效实用。目前市场上最著名的虚拟机就是VMware Workstation 了,其次是Oracle的Virtualbox。值得一提的是Virtualbox是开源免费的,不过在网上随处可见VMware Workstation的注册机。下面上图了,有兴趣的网友准备好需要的工具软件,跟我学吧! 第一步:上官网下载 Ubuntu https://www.360docs.net/doc/fb4094835.html,/desktop/get-ubuntu/download/ 第二步:下载安装虚拟机VMware Workstation,安装完成后我们启动它进入下一步。

下载地址: https://www.360docs.net/doc/fb4094835.html,/cn/d/info/desktop_downloads/vmware_workstation/7_0 第2页:制作虚拟环境 第三步:制作虚拟环境

LINUX必学的60个命令

Linux提供了大量的命令,利用它可以有效地完成大量的工作,如磁盘操作、文件存取、目录操作、进程管理、文件权限设定等。所以,在Linux系统上工作离不开使用系统提供的命令。要想真正理解Linux系统,就必须从Linux命令学起,通过基础的命令学习可以进一步理解Linux系统。 不同Linux发行版的命令数量不一样,但Linux发行版本最少的命令也有200多个。这里笔者把比较重要和使用频率最多的命令,按照它们在系统中的作用分成下面六个部分一一介绍。 ◆ 安装和登录命令:login、shutdown、halt、reboot、install、mount、umount、chsh、exit、last; ◆文件处理命令:file、mkdir、grep、dd、find、mv、ls、diff、cat、ln; ◆系统管理相关命令:df、top、free、quota、at、lp、adduser、groupadd、kill、crontab; ◆ 网络操作命令:ifconfig、ip、ping、netstat、telnet、ftp、route、rlogin、rcp、finger、mail、 nslookup; ◆系统安全相关命令:passwd、su、umask、chgrp、chmod、chown、chattr、sudo ps、who;

◆其它命令:tar、unzip、gunzip、unarj、mtools、man、unendcode、uudecode。 本文以Mandrake Linux 9.1(Kenrel 2.4.21)为例,介绍Linux下的安装和登录命令。 login 1.作用 login的作用是登录系统,它的使用权限是所有用户。 2.格式 login [name][-p ][-h 主机名称] 3.主要参数 -p:通知login保持现在的环境参数。 -h:用来向远程登录的之间传输用户名。 如果选择用命令行模式登录Linux的话,那么看到的第一个Linux命令就是login:。 一般界面是这样的: Manddrake Linux release 9.1(Bamboo) for i586 renrel 2.4.21-0.13mdk

Ubuntu学习笔记

Ubuntu学习目录 一Ubuntu如何使用root帐户登陆 2 二 文件编辑器 vi使用 2 1、关于文本编辑器 2 2、vi 编辑器 2 2.1为什么要学会简单应用vi 2 3、vi 编辑器的使用方法 2 3.1 如何调用vi 2 3.2 vi 的三种命令模式 2 3.3 文件的保存和退出 3 3.4 光标移动 3 3.5 插入模式(文本的插入) 3 3.6 文本内容的删除操作 4 3.7 恢复修改及恢复删除操作 4 3.8 可视模式 4 3.9 复制和粘帖的操作 5 3.10 关于行号 6 3.11 查找和替换功能 6 3.11.1 查找 6 3.11.2 替换 7 4、关于本文 7 5、后记 7 6、参考文档 8 三 ubuntu安装软件方法 8 1、rpm包安装方式步骤: 8 2、deb包安装方式步骤: 8 3、tar.gz源代码包安装方式: 8 4、tar.bz2源代码包安装方式: 8 5、apt方式安装: 9 6、bin文件安装: 9 7、不需要安装的软件: 9 8、安装问题解决 9

一Ubuntu如何使用root帐户登陆 Ubuntu root用户在默认情况下是禁用的,不允许用root登陆。如何要使用root帐户登陆,遵循一下步骤: 1、首先设置root密码,利用现有管理员帐户登陆Ubutu,在终端执行命令:sudo passwd root,接着输入密码和root密码,重复密码。再重新启动就可以用root登陆。 2、默认情况是不允许用root帐号直接登陆图形界面的。这可以通过修改/etc/gdm/gdm.conf文件来允许root直接登陆,在该文件中找到AllowRoot=false 将其改为 AllowRoot=true 切换用户就可以了。 注:gdm.conf默认是只读属性,修改前请先使用sudo chmod 777 /etc/gdm/gdm.conf 奖文件权限设置为为777。 二 文件编辑器 vi使用 1、关于文本编辑器 文本编辑器有很多,比如图形模式的gedit、kwrite、OpenOffice ... ... ,文本模式下的编辑器有vi、vim(vi的增强版本)和nano ... ... vi和vim是我们在Linux中最常用的编辑器。我们有必要介绍一下vi(vim)最简单的用法,以让Linux入门级用户在最短的时间内学会使用它。 nano 工具和DOS操作系统下的edit操作相似,使用简单,我们不作介绍了,如果您有兴趣,不妨尝试一下; 2、vi 编辑器 2.1为什么要学会简单应用vi vi或vim是Linux最基本的文本编辑工具,vi或vim虽然没有图形界面编辑器那样点鼠标的简单操作,但vi编辑器在系统管理、服务器管理中,永远不是图形界面的编辑器能比的。当您没有安装X-windows桌面环境或桌面环境崩溃时,我们仍需要字符模式下的编辑器vi; vi或vim 编辑器在创建和编辑简单文档最高效的工具; 3、vi 编辑器的使用方法 3.1 如何调用vi [root@localhost ~]# vi filename 3.2 vi 的三种命令模式 Command(命令)模式,用于输入命令; Insert(插入)模式,用于插入文本;

图文教你Ubuntu在linux下虚拟机安装

第1页:安装前的准备工作 最近国外厂商和国内Linux爱好者都在热议的话题是,Linux有能力挑战Windows的市场地位了。为什么呢?因为最流行的Linux--Ubuntu发布新版本10.10了,它的人机交互界面越来越棒。 但对大部分不了解Linux操作系统的人来说,都还有这样的想法:要重装系统才能玩Ubuntu,我才懒得干呢。Linux初学者说我不会安装咋办呢?针对这些问题,小编借这篇文章,手把手教大家用虚拟机来安装Ubuntu 10.10。 虚拟机的好处大家都知道,它可以安装在Windows平台下模拟真实的电脑环境,不需要重装Windows系统,安全高效实用。目前市场上最著名的虚拟机就是VMware Workstation 了,其次是Oracle的Virtualbox。值得一提的是V irtualbox是开源免费的,不过在网上随处可见VMware Workstation的注册机。下面上图了,有兴趣的网友准备好需要的工具软件,跟我学吧! 第一步:上官网下载Ubuntu https://www.360docs.net/doc/fb4094835.html,/desktop/get-ubuntu/download/ 第二步:下载安装虚拟机VMware Workstation,安装完成后我们启动它进入下一步。 下载地址: https://www.360docs.net/doc/fb4094835.html,/cn/d/info/desktop_downloads/vmware_workstation/7_0 第2页:制作虚拟环境

第三步:制作虚拟环境

第3页:简单配置虚拟环境

第4页:自定义虚拟环境硬件配置

ubuntu命令行指令

ubuntu命令行指令 一、管理员权限 绝大部分情况下,命令的行为须要被赋予管理员权限才能执行。 命令 sudo 作用:赋予当前命令行为管理员权限。 样式:sudo 其它命令 举例:sudo su #切换到超级管理员权限模式# 二、文件操作命令 2.1 cd 作用:改变终端当前目录位置 样式:cd 目标目录位置 举例:cd /boot/grub #转到grub文件夹下# cd / #转到根目录位置# cd /home/下载 #转到下载目录位置# 2.2 ls 作用:列出(行式)当前目录下的全部文件以及文件夹名称 举例:cd /home/下载 ls 终端上返回信息:A V&GV(仅有的文件) 2.3 nautilus 作用:新建一个具有管理员权限的文件窗口(默认位置是根目录,须配合sudo 命令),可以在此窗口中在任意位置粘贴、创建、修改文件或对任意位置的已有文件进行修改、删除、移动操作。 举例:sudo nautilus 这个命令之后就是鼠标操作,就执行效果而言,等效于cp、mk、vi、remove的命令操作;是命令与鼠标结合完美的典范,是对辩证法对立统一的完美诠释。

2.4 gedit 作用:编辑指定文本文件,通常需要管理员权限。 举例:sudo gedit /home/文档/av&gv #以gedit打开名为av&gv的文件# 三、程序安装与卸载 3.1 apt-get 作用:用于程序安装与卸载命令的标志,须与命令3.1、3.2、3.3组合,并且需要管理员权限。 3.2 install 作用:安装指定的程序(程序名称即可,一般不用添加网络地址) 举例:sudo apt-get install ibus #安装输入法框架ibus# 3.3remove 作用:卸载指定的程序(或单用删除文件),一般最好加上“--purge”执行清除式卸载;并在程序名称后添加*号 举例:sudo apt-get remove --purge nvidia* #卸载nvidia的驱动及其配置文件# 3.4 update 作用:更新本地软件源文件,需管理员权限。 举例:sudo apt-get update 四、更新引导 命令:update-grub 作用:更新引导,通常在更改驱动(特别是显卡)和内核后必要的操作,需要管理员权限 举例:sudo update-grub 五、重启与关机 5.1 reboot

ubuntu shell 使用命令大全

ubuntu shell 使用命令大全 前言 下面的命令大都需要在控制台/ 终端/ shell 下输入。 控制台, 终端, 和shell 意味着同样一件事- 一个命令行界面,他可以用来控制系统。 打开一个控制台: 应用程序--> 附件--> 终端 任何一个使用'sudo' 作为前缀的命令都需要拥有管理员(或root) 访问权限。所以你会被提示输入你自己的密码。 安装升级 查看软件xxx安装内容 dpkg -L xxx 查找软件库中的软件 apt-cache search 正则表达式 或 aptitude search 软件包 显示系统安装包的统计信息 apt-cache stats 显示系统全部可用包的名称 apt-cache pkgnames 显示包的信息 apt-cache show k3b 查找文件属于哪个包 apt-file search filename 查看已经安装了哪些包 dpkg -l 查询软件xxx依赖哪些包 apt-cache depends xxx 查询软件xxx被哪些包依赖 apt-cache rdepends xxx 增加一个光盘源 sudo apt-cdrom add 系统升级 sudo apt-get update (这一步更新包列表) sudo apt-get dist-upgrade (这一步安装所有可用更新) 或者 sudo apt-get upgrade (这一步安装应用程序更新,不安装新内核等) 清除所有已删除包的残馀配置文件 dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P 如果报如下错误,证明你的系统中没有残留配置文件了,无须担心。 dpkg: --purge needs at least one package name argument Type dpkg --help for help about installing and deinstalling packages [*]; Use `dselect' or `aptitude' for user-friendly package management; Type dpkg -Dhelp for a list of dpkg debug flag values; Type dpkg --force-help for a list of forcing options; Type dpkg-deb --help for help about manipulating *.deb files; Type dpkg --license for copyright license and lack of warranty (GNU GPL) [*]. Options marked [*] produce a lot of output - pipe it through `less' or `more' ! 编译时缺少h文件的自动处理 sudo auto-apt run ./configure 查看安装软件时下载包的临时存放目录

实验二 Tutorial 2 Linux 基本命令操作2

Tutorial 2 Linux 基本命令操作2 1 实验简介 虽然目前linux 图像界面的使用已相当的方便,但是有些操作还是在字符界面下使用比较灵活。除此之外,使用字符界面登陆linux 系统,系统资源的消耗也比较少,从而可以提高系统性能。 本次实验内容主要包括:linxu 下文件和目录操作命令的使用方法。 2 实验目的 (1)掌握远程登录Linux 系统的软件putty 的基本用法。 (2)掌握文件和目录的区别 (3)熟悉文件和目录的相关操作:建立、复制、移动、删除、重命名、查找、统计等 (4)掌握输入、输出重定向的用法 (5)掌握find 的常见查找模式 (6)理解文件的类型及查看 3 实验准备 (1)了解远程登录的概念,以及远程登录软件putty。 (2)了解linux 命令行的基本概念,掌握通配符的使用方法。 (3)了解绝对路径和相对路径的概念及表达方法。 4 远程登录软件putty的基本用法实验步骤 基本做法同实验1. 5 Linux 文件和目录操作命令 说明:在下面的文档中的$为系统提示符。 (1) 使用cd 和pwd 命令,掌握相对路径和绝对路径。 对照右图,假如从目录user3 开始,键完以下命令后,你的位置会在哪里。 请将结果填在横线上。 $pwd /home/user3 $cd .. $pwd $cd.. $cd usr $pwd $cd /usr $pwd $cd.. /tmp $pwd $cd.

$pwd (2)检查当前的子目录pwd。 $ pwd (3) 在你的注册目录下创建(mkdir)子目录:dir1、dir2。 $ mkdir dir1 dir2 (4) 在你的主目录中创建一个叫junk 的目录。将这个目录变为工作目录,应当使用什么命令?这个新目录的绝对路径名是什么? (5) 在主目录创建以下目录,要求只能用一个命令行: junk/dira/dirl junk/dira junk/dira/dir2 junk/dira/dirl/dirc 你碰到什么问题了吗?如果碰到问题,在重试之前,将刚才创建的所有目录删除,这个删除应该使用哪一个命令?mkdir –p junk/dira/dir1/dirc junk/dira/dir2 (-p创建父目录) (6) 在主目录仅使用rmdir 命令,删除在junk 目录下的所有子目录。仅用一个rmdir 命令如何实现这一操作? rmdir {junk/dira/dir2,junk/dira/dir1/dirc,junk/dira/dir1,junk/dira} (7) 使用“touch 文件名”方法在你的注册目录下建立文件file1 和file2 $touch file1 file2 (8) 将file1 file2 复制到dir1 中,并察看注册目录与dir1 目录下有何变化? $ cp file1 file2 dir1 (9) 将文件file1,file2 从注册目录移动至dir2 中,再察看注册目录与dir2目录有何变化? $mv file1 file2 dir2 (10) 将dir2 中的文件file1 改名为myfile1 $ mv /dir2/file1 /dir2/myfile1 (11) 请使用绝对路径删除文件myfile1 $ rm /root/dir2/myfile1 (12)分屏显示/bin 目录下文件的详细信息。 $cd /bin $list –l | more (13)回到根目录,利用cp 命令复制系统文件/etc/profile 到当前目录下。 $ cd ~ $ cp /etc/profile . (14)复制文件profile 到一个新文件profile.bak,作为备份。 (15)用less 命令分屏查看文件profile 的内容,注意练习less 命令的各个子命令,如b、空格键、q 、/字符串(查找)等,并对then 关键字查找。 (16)用grep 命令在profile 文件中对关键字then 进行查询。 (17) 在家目录下创建目录test,并复制/etc 目录下的最后四个字符为.ini的文件到test 目录下。 (18)使用gzip 命令对test 下的文件进行压缩。 (19)使用tar 命令对test 下的文件打包。 (20)把用tar 命令打包的文件解包,并用gzip 命令对文件进行解压缩。 (21)利用tar 命令把test 中的文件压缩打包。 (22) 在/var/lib 目录下查找所有文件其所有者是games 用户的文件。

ubuntu11.10 安装与初级应用

Ubuntu11.10安装与使用图文教程 一.准备安装Ubuntu11.10系统 1.Ubuntu简介 Ubuntu是一个以桌面应用为主的Linux操作系统,其名称来自非洲南部祖鲁语或豪萨语的“ubuntu”一词(译为吾帮托或乌班图),意思是“人性”、“我的存在是因为大家的存在”,是非洲传统的一种价值观,类似华人社会的“仁爱”思想。 Ubuntu是一个社区开发的基于Debian GNU/Linux的操作系统,适合笔记本、桌面计算机和服务器使用。它包含了所有您需要的应用程序——网页浏览器、幻灯片演示、文档编辑和点子表格软件,即时通讯软件等等。 2004年10月,Ubuntu的第一个版本正式发布。此后Ubuntu每六个月发布一个新版本,用户可以免费升级到最新版本。Ubuntu鼓励用户及时地升级到新版本,以便享用最新的功能和软件。Ubuntu的命名遵从“Y.MM(开发代号)”格式,Y代表年份,MM代表月份。在括号里的名字是预发布版时确定的开发代号。 每一个普通版本都将被支持18个月,长期支持版(Long Term Support,LTS)的桌面版本支持3年,服务器版本则是5年。 (1)Ubuntu正式支援的衍生版本包括: 1、Kubuntu:使用和Ubuntu一样的软件库,但不采用GNOME,而使用更为美观的KDE为其预定桌面环境。 2、Edubuntu:是Ubuntu的教育发行版。这是为了使教育工作者可以在短于一小时的时间内设计电脑教室,或建立网上学习环境,并且可即时控制该环境而不用在家学习而创作的。 3、Xubuntu:属于轻量级的发行版,使用Xfce4作为桌面环境,与Ubuntu采用一样的软件库。 4、Ubuntu Server Edition:其提供了服务器的应用程序,如一个电邮服务器、一个LAMP网页服务器平台、DNS设定工具、档案服务器与数据库管理。与原来的桌面版本比较起来,服务器版的光碟映像档体积较细,并且其对硬件规格的要求更低。若要运行服务器版,最少只需要有500MB的硬盘空间与64MB的内存便可。然而其并没有任何桌面环境提供,使用者在缺省环境里只可使用文字接口。 5、Gobuntu:GNU版本,只使用自由软件基金会认证过的自由软件,不含任何非开源成分。 6、Ubuntu Studio:音频,视频和图像设计专用版本。 7、Ubuntu JeOS:JeOS,即──Just enough Operation System(刚刚好的系统),发音同:Juice,是一个高度精简的、专门面向虚拟化应用的发行版。也就面向虚拟化技术的系统。可当修复盘用。 8、Mythbuntu:Mythbuntu,是一套基于Ubuntu的面向媒体中心电脑的发行版.MythTV是其中最重要的组成之一,用于实现媒体中心等功能。新版本改用了Xfce。 9、Lubuntu:另一个轻量级的Ubuntu版本(2011年10开始) (2)介绍Ubuntu11.10以下特点:

Ubuntu安装虚拟机工具VMware Tool详细教程

Ubuntu安装虚拟机工具VMware Tool详细教程 在VMware下安装Ubuntu,那么必须安装VMware-tools,才能获得更好的体验,包括屏幕分辨率、声音、和windows共享剪贴板等等。 个人觉得安装vmware-tools很重要的几点: 1,切换不用再CTRL+ALR了。 2,虚拟机与主机之间可以直接复制粘贴东西了,就是上面说的剪切板共享。 3,主机给虚拟机共享文件,不用再用FTP,或者是通过聊天软件传文件了,不用再搞局域网,直接在虚拟机设置上面添加共享目录,然后在虚拟机里访问mnt文件夹里的hgfs文件夹就出来了。 正题:Ubuntu安装虚拟机工具VMware Tool 0、确定你的虚拟机已打开并登录。 1、点击VMware菜单的-VM-Install VMware Tools 这时,在Ubuntu下会自动加载Linux版的VMware Tools的安装光盘镜像。你会看到虚拟机的桌面上出现了一个名为VMware Tools的光盘图标,并且被自动打开。 其中包括VMwareTools-xxx-i386.rpm和VMwareTools- xxx.tar.gz两个文件。 如果你双击那个 rpm 文件,会提示说不支持的软件包,因为 rpm 是为RedHat 准备的安装包,我们需要的是 .tar.gz 那个。 2、把 .tar.gz 文件拷贝而到桌面,右键菜单-解压缩到此处。会自动解压为一个 vmware-tools-distrib 目录。 打开终端(系统的应用程序菜单-附件-终端) 3、然后在终端里面执行以下命令行:

$ cd Desktop(要是中文的就是 $ cd 桌面) $ cd vmware-tools-distrib $ sudo ./vmware-install.pl 4、回车之后提示输入管理员密码,然后一路确认回车后(每出一个信息命令,就按回车就行了,有时候按了一个回车需要等候一会,不要急,下一个提示很快就出来了,)(相当于在Windows里安装软件时所填答的诸多对话框,我们这里均采用缺省设置),直到最后出现“Enjoy——the VMware team”的字样后,VMwareTools终于安装完成了。 ------------------------------------------------------------------------- 桌面没有VMware Tools的安装光盘镜像图标怎么办? 原因1.VMware Tools没下好,一步一步来,慌啥子! 原因2.我明明根据虚拟机程序上的命令下了VMware Tools程序的啊。为什么虚拟机桌面住没有呢?解决办法:直接在虚拟机设置里面添加一个CDROM,指向主机里虚拟机程序安装目录下的linux.iso镜像文件(这个linux.iso文件就是你刚才下的VMware Tools文件镜像),然后重启虚拟机,你就能看到桌面上的VMware Tools的安装光盘镜像图标了,接下来的操作参考上文。

Linux 操作系统 Ubuntu 图 安装 教程 hzd

。 。 Linux 操作系统 Ubuntu 9.10 图解安装教程 QQ :183284035 2011-11-1 Ubuntu 是一个神奇的 Linux 操作系统,四年多前我们第一次试用了 Ubuntu ,之后便被深深的吸引, 特别是从 8.04Lts 开始,Ubuntu 便成了沙浪网众人的主要工作环境。特别是沙浪网美女小梅,在午睡梦呓 中竟然喃喃自语说出“非 Ubuntu 不嫁”这样的豪言壮语,令人震撼! Ubuntu 是一个流行的 Linux 操作系统,基于 Debian 发行版和 GNOME 桌面环境,和其他 Linux 发 行版相比,Ubuntu 非常易用,和 Windows 相容性很好,非常适合 Windows 用户的迁移,预装了大量 常用软件,中文版的功能也较全,支持拼音输入法,预装了 Firefox 、Open Office 、多媒体播放、图像处理等 大多数常用软件,一般会自动安装网卡、音效卡等设备的驱动,对于不打游戏不用网银的用户来说,基本 上能用的功能都有了,在 Windows 操作系统下不用分区即可安装使用,就如同安装一个应用软件那么容 易,整个 Ubuntu 操作系统在 Windows 下就如同一个大文件一样,很容易卸载掉。 Ubuntu 经过近五年的发展,从 Ubuntu 4.10 到当前的 Ubuntu 9.10,进步之大是有目共睹的事实。 当然,Ubuntu 的进步是建立在所有自由软件进步的基础之上的。 下面,通过一些简单的介绍,让我们来了解一下 Ubuntu : 官方解答 什么是 Ubuntu? Ubuntu 是一个由全球化的专业开发团队建造的操作系统。它包含了所有您需要的应用程序:浏览器、 Office 套件、多媒体程序、即时消息等。 Ubuntu 是一个 Windows 和 Office 的开源替代品。 1. 关于 Ubuntu 一词 Ubuntu 是一个南非的民族观念,着眼于人们之间的忠诚和联系。该词来自于祖鲁语和科萨语。Ubuntu (发音"oo-BOON-too"--“乌班图”)被视为非洲人的传统理念,也是建立新南非共和国的基本原则 之一,与非洲复兴的理想密切相关。Ubuntu 精神的大意是“人道待人”(对他人仁慈)另一种翻译可 以是:“天下共享的信念,连接起每个人” “具有 ubuntu 精神的人心胸开阔,乐于助人,见贤思 齐而不忌妒贤能,因为他/她拥有适度的自信,而这源自如下认识:自己乃是属于一个更大的整体, 当他人受到伤害或死去时,当他人受到折磨或压迫时,这个整体就会消失。”--大主教 Desmond Tutu 。 作为一个基于 GNU/Linux 的平台,Ubuntu 操作系统将 ubuntu 精神带到了软件世界。

相关文档
最新文档