购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.3 编程环境

在本节中,我将描述如何设置自己的计算机来完成本书中的所有编程任务。你可以根据使用的Linux发行版和个人偏好选择不同的设置方式。

我使用Ubuntu 20.04 LTS桌面版自带的GNU编程工具创建和执行本书中的程序,该发行版既作为主力操作系统,也作为Windows Subsystem for Linux下运行的操作系统。你可以在Ubuntu的网站免费下载它,其自带的编译器gcc和g++版本为9.3.0,汇编器as的版本为2.34。

你可能刚接触Linux命令行。在我们讲解程序的同时,我会展示用于创建这些程序的命令,不过这些只是一些基础知识而已。如果你花些时间熟悉命令行的使用,必将获益匪浅。William Shotts所著的 The Linux Command Line, Second Edition (No Starch Press, 2019)是一本不错的参考资料。

你还应该熟悉Linux提供的编程工具文档。最简单的就是大多数程序中内置的帮助系统。你可以通过输入命令名和--help选项访问帮助系统。例如,gcc --help会显示gcc的命令行选项列表以及各个选项的简要描述。

大多数Linux程序都包含手册,通常称为手册页,它提供了比帮助系统更完备的文档。只需输入man命令以及程序名称就可以阅读手册页。例如,man man会显示man程序的手册页。

GNU程序甚至还自带了更丰富的文档,可以通过输入info命令以及程序名称进行阅读。例如,info info会显示info程序的文档,如下所示:

Next: Stand-alone Info, Up: (dir)
 
Stand-alone GNU Info
********************
 
This documentation describes the stand-alone Info reader which you can
use to read Info documentation.
 
    If you are new to the Info reader, then you can get started by typing
'H' for a list of basic key bindings. You can read through the rest of
this manual by typing <SPC> and <DEL> (or <Space> and <Backspace>) to
move forwards and backwards in it.
 
* Menu:
 
* Stand-alone Info::            What is Info?
* Invoking Info::               Options you can pass on the command line.
* Cursor Commands::             Commands which move the cursor within a node.
* Scrolling Commands::          Commands for reading the text within a node.
* Node Commands::               Commands for selecting a new node.
* Searching Commands::          Commands for searching an Info file.
* Index Commands::              Commands for looking up in indices.
* Xref Commands::               Commands for selecting cross-references.
* Window Commands::             Commands which manipulate multiple windows.
* Printing Nodes::              How to print out the contents of a node.
* Miscellaneous Commands::      A few commands that defy categorization.
* Variables::                   How to change the default behavior of Info.
* Colors and Styles::           Customize the colors used by Info.
* Custom Key Bindings::         How to define your own key-to-command bindings.
* Index::                       Global index.
 
-----Info: (info-stnd)Top, 31 lines --All-------------------------------------------
Welcome to Info version 6.7. Type H for help, h for tutorial.

以*起始并以::结尾的条目是指向其他info页的超链接。使用键盘上的方向键将光标定位在此类条目并按ENTER键就可以跳转到该页面。

要想获取info文档,必须安装以下Ubuntu包。

● binutils-doc:为GNU汇编器as(有时也称为gas)添加文档。

● gcc-doc:为GNU gcc编译器添加文档。

根据你使用的Linux发行版,需要安装的包可能会不一样。

在大多数例子中,我在编译程序的时候没有开启优化(-O0选项),因为我们的目标是学习概念,而不是生成最高效的代码。这些示例应该可以在任何安装了gcc、g++、as的x86-64 GNU开发环境中正常运行。但是,编译器生成的机器码可能会因特定的配置和版本而有所不同。你会在本书的中间部分看到编译器生成的汇编语言。在你继续阅读本书的其余部分时,任何差异都应该是一致的。

编程的时候还要用到文本编辑器。不要使用字处理器。字处理器会添加很多隐藏的控制字符来格式化文本。这些隐藏字符会干扰编译器和汇编器,使其无法正常工作。

有一些不错的Linux文本编辑器可供选择,它们各有特色。我喜欢的编辑器不时变化。我建议你多尝试几种,选择你喜欢的那款。

我用过的文本编辑器如下。

● nano:大多数Linux发行版都自带的一款简单的文本编辑器,采用命令行用户界面。文本会被直接插入编辑器。CTRL和meta键用于指定文本操作的组合键。

● vi:所有的Linux(和UNIX)系统应该都有安装,采用面向模式的命令行用户界面。通过键盘命令操作文本。有些命令可以将vi置于文本插入模式。ESC键用于返回命令模式。大多数Linux发行版自带了vim(Vi IMproved),添加了有助于程序源代码编辑的各种特性。

● emacs:采用命令行用户界面。文本被直接插入编辑器。CTRL和meta键用于指定文本操作的组合键。

● gedit:GNOME桌面提供的文本编辑器,采用图形用户界面,如果你用过字处理器,应该不会陌生。

● kate:KDE桌面提供的文本编辑器,采用图形用户界面,如果你用过字处理器,应该不会陌生。

● Visual Studio Code:Microsoft推出的免费编辑器,可以在Windows 7/8/10、Linux和macOS上运行,采用图形用户界面,可用于编辑远程服务器上的文本文件和安装Windows Subsystem for Linux。此外还允许打开命令终端面板。

vi和emacs也提供了图形用户界面。

就本书涉及的编程而言,上述以及很多其他文本编辑器都是不错的选择。没必要花费过多的时间去挑选“最好的”。

动手实践

确保弄清楚你用来编程的计算机的配置。它使用的是什么CPU?内存多大?连接了哪些I/O设备?你打算用哪款编辑器? al6Us0Mjl1SWeaEgd+SUrmIyfT1u8sTK6sbRrzVsN1JKGL37dNNZm+OgDDIZKCB4

点击中间区域
呼出菜单
上一章
目录
下一章
×