📄 00000009.htm
字号:
(Practical Extraction Report Language)编写用来处理文本文件和生成报表的脚本程 <BR>序,还可以利用 Tcl/Tk 的脚本程序编写图形用户界面。如果恰当地使用这些脚本语言, <BR>可以达到事半功倍的效果。在 Windows NT 下,能够被称为脚本语言的大概算是 VBA(Visual <BR>Basic for Application),但 VBA 仅在有限的应用软件中支持,例如,Microsoft Office, <BR>而并不被操作系统支持。现在,Microsoft 正打算将 Perl 的支持添加到它的操作系统中。 <BR>本章将简单介绍一些 Linux 下常见的开发工具以及有关 Perl 脚本编程的知识。由 <BR>于 Tcl/Tk 主要是用来编写图形用户界面的,我们将在下一章讲解 Tcl/Tk 的使用。 <BR>13.3 Linux 上的开发工具 <BR>13.3.1 获取帮助 <BR>在 Linux 上,程序员获取帮助的最常用工具是 man 或 xman。利用 man 或 xman, <BR>程序员可以查看特定函数的说明。例如,键入 man printf 将显示 printf 函数的详细调 <BR>用接口。由于 Linux 上大部分软件开发工具都来自自由软件基金会的 GNU 项目,因此, <BR>程序员可以使用另外一个程序获得有关开发工具使用的详细帮助信息,这一程序就是 <BR>info,它是 GNU 的超文本帮助系统。程序员可在命令行键入 info 进入 info 帮助系统, <BR>也可在 Emacs 中键入 Esc-x, info(或 C-h, i)而进入 info 帮助系统。 <BR>在 info 中,在线帮助文本被组织成一个个节点(node),每个节点代表一个特定的 <BR>主题。屏幕上的第一行显示了该节点的标题,如图 13-1 所示。 <BR>(屏幕图) <BR>图 13-1 在 Emacs 中访问 info 帮助系统 <BR>info 帮助系统的初始屏幕显示了一个主题目录,你可以将光标移动到带有 * 的主题 <BR>菜单上面,然后按回车键进入该主题,也可以键入 m,后跟主题菜单的名称而进入该主题。 <BR>例如,你可以键入 m,然后再键入 gcc 而进入 gcc 主题中。 <BR>如果你要在主题之间跳转,则必须记住如下的几个命令键: <BR>? n:跳转到该节点的下一个节点; <BR>? p:跳转到该节点的上一个节点; <BR>? m: 指定菜单名而选择另外一个节点; <BR>? f:进入交叉引用主题; <BR>? l:进入该窗口中的最后一个节点; <BR>? TAB:跳转到该窗口的下一个超文本链接; <BR>? RET:进入光标处的超文本链接; <BR>? u:转到上一级主题; <BR>? d:回到 info 的初始节点目录; <BR>? h:调出 info 教程; <BR>? q:退出 info。 <BR>13.3.2 GNU C 和 C++ 编译器 <BR>Linux 中最重要的软件开发工具是 GCC。GCC 是 GNU 的 C 和 C++ 编译器。实际上, <BR>GCC 能够编译三种语言:C、C++ 和 Object C(C 语言的一种面向对象扩展)。利用 gcc 命 <BR>令可同时编译并连接 C 和 C++ 源程序。 <BR>13.3.2.1 GCC 基本使用 <BR>利用 GCC 编译并连接少数几个 C 源文件是简单的。假设读者的一个程序只有一个源 <BR>文件 hello.c,其内容如下: <BR>#include <stdio.h> <BR>#include <stdlib.h> <BR> <BR>int main () <BR>{ <BR> printf ("Hello, world!\n"); <BR> <BR> return 0; <BR>} <BR>则只需在命令键入 gcc -o hello hello.c 就可以编译、连接并生成一个可执行文件 <BR>hello: <BR>[WeiYM@versa gcc]$ gcc -o hello hello.c <BR>[WeiYM@versa gcc]$ ./hello <BR>Hello, world! <BR>如果你有两个或少数几个 C 源文件,也可以方便地利用 GCC 编译、连接并生成可执 <BR>行文件。例如,假设你有两个源文件 main.c 和 factorial.c 两个源文件,现在要编译 <BR>生成一个计算阶乘的程序。这两个源文件的内容如清单 13-1 和清单 13-2 所示。 <BR>清单 13-1 factorial.c <BR>――――――――――――――――――――――――――――――――――――――― <BR>#include <stdio.h> <BR>#include <stdlib.h> <BR> <BR>int factorial (int n) <BR>{ <BR> if (n <= 1) <BR> return 1; <BR> <BR> else <BR> return factorial (n - 1) * n; <BR>} <BR>――――――――――――――――――――――――――――――――――――――― <BR>清单 13-2 main.c <BR>――――――――――――――――――――――――――――――――――――――― <BR>#include <stdio.h> <BR>#include <stdlib.h> <BR> <BR> <BR>int factorial (int n); <BR> <BR>int main (int argc, char **argv) <BR>{ <BR> int n; <BR> <BR> if (argc < 2) { <BR> printf ("Usage: %s n\n", argv [0]); <BR> return -1; <BR> } <BR> else { <BR> n = atoi (argv[1]); <BR> printf ("Factorial of %d is %d.\n", n, factorial (n)); <BR> } <BR> <BR> return 0; <BR>} <BR>――――――――――――――――――――――――――――――――――――――― <BR>利用如下的命令可编译生成可执行文件,并执行程序: <BR>[WeiYM@versa gcc]$ gcc -o factorial main.c factorial.c <BR>[WeiYM@versa gcc]$ ./factorial 5 <BR>Factorial of 5 is 120. <BR>在上面的 GCC 命令选项中,使用了一个 -o 选项,该选项指定了编译/连接生成的输 <BR>出文件的名称。如果不指定该输出文件的名称,则 GCC 自动建立一个 a.out 文件。 <BR>我们也可以分别对上述两个文件进行编译,然后再连接起来,这时可使用 GCC 的 -c 选 <BR>项,如下所示: <BR>[WeiYM@versa gcc]$ gcc -c main.c <BR>[WeiYM@versa gcc]$ gcc -c factorial.c <BR>[WeiYM@versa gcc]$ gcc -o factorial main.o factorial.o <BR>[WeiYM@versa gcc]$ ./factorial 10 <BR>Factorial of 10 is 3628800. <BR>13.3.2.2 用 GCC 编译 C++ 程序 <BR>GCC 可同时用来编译 C 程序和 C++ 程序。一般来说,C 编译器通过源文件的后缀名 <BR>来判断是 C 程序还是 C++ 程序。在 Linux 中,C 源文件的后缀名为 .c,而 C++ 源文 <BR>件的后缀名为 .C 或 .cpp。 <BR>但是,gcc 命令只能编译 C++ 源文件,而不能自动和 C++ 程序使用的库连接。因此, <BR>通常使用 g++ 命令来完成 C++ 程序的编译和连接,该程序会自动调用 gcc 实现编译。 <BR>假设我们有一个如下的 C++ 源文件(hello.C): <BR>#include <iostream.h> <BR> <BR>void main (void) <BR>{ <BR> cout << "Hello, world!" << endl; <BR>} <BR>则可以如下调用 g++ 命令编译、连接并生成可执行文件: <BR>[WeiYM@versa gcc]$ g++ -o hello hello.c <BR>[WeiYM@versa gcc]$ ./hello <BR>Hello, world! <BR>13.3.2.3 GCC 的其他选项 <BR>gcc 命令的基本语法是: <BR>gcc options filename <BR>gcc 的选项一般以减号(-)开头,有短的选项,例如上面看到的 -o 或 -c,也有长 <BR>的选项。表 13-1 给出了 gcc 命令的常用选项。 <BR>表 13-1 gcc 命令的常用选项 <BR>选项 <BR>解释 <BR>-ansi <BR>只支持 ANSI 标准的 C 语法。这一选项将禁止 GNU C 的某些特色, <BR>例如 asm 或 typeof 关键词。 <BR>-c <BR>只编译并生成目标文件。 <BR>-DMACRO <BR>以字符串“1”定义 MACRO 宏。 <BR>-DMACRO=DEFN <BR>以字符串“DEFN”定义 MACRO 宏。 <BR>-E <BR>只运行 C 预编译器。 <BR>-g <BR>生成调试信息。GNU 调试器可利用该信息。 <BR>-IDIRECTORY <BR>指定额外的头文件搜索路径DIRECTORY。 <BR>-LDIRECTORY <BR>指定额外的函数库搜索路径DIRECTORY。 <BR>-lLIBRARY <BR>连接时搜索指定的函数库LIBRARY。 <BR>-m486 <BR>针对 486 进行代码优化。 <BR>-o FILE <BR>生成指定的输出文件。用在生成可执行文件时。 <BR>-O0 <BR>不进行优化处理。 <BR>-O 或 -O1 <BR>优化生成代码。 <BR>-O2 <BR>进一步优化。 <BR>-O3 <BR>比 -O2 更进一步优化,包括 inline 函数。 <BR>-shared <BR>生成共享目标文件。通常用在建立共享库时。 <BR>-static <BR>禁止使用共享连接。 <BR>-UMACRO <BR>取消对 MACRO 宏的定义。 <BR>-w <BR>不生成任何警告信息。 <BR>-Wall <BR>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -