第一章 引言
本章简单介绍了Unix的历史,包括贝尔实验室开发的Unix早期版本、AT&T System V以及Unix的其他版本,如BSD、HP UX、IBM AIX和Sun/SolarisUnix。此外,还介绍了Linux的开发及其各种发行版(包括Debian、 Ubuntu、 Mint、 RedHat和Slackware),列出了适用于Linux的各种硬件平台和虚拟机,并展示了如何将UbuntuLinux同时安装到Microsoft Windows中的VirtualBox虚拟机和VMware虚拟机上。
Unix/Linux命令:
- ls:ls dirname:列出CWD或目录的内容。
- cd dirname:更改目录。
- pwd:打印CWD的绝对路径名。
- touch filename:更改文件名时间戳(如果文件不存在,则创建文件)。
- cat filename:显示文件内容。
- cp src dest:复制文件。
- mv src dest:移动或重命名文件。
- mkdir dirname:创建目录。
- rmdir dirname:移除(空)目录。
- rm filename:移除或删除文件。
- ln oldfile newfile:在文件之间创建链接。
- find:搜索文件。
- grep:搜索文件中包含模式的行。
- ssh:登录到远程主机。
- gzip filename:将文件压缩为.gz文件。
- gunzip file.gz:解压.gz文件。
- tar -zcvf file.tgz .:从当前目录创建tar文件。
- tar -zxvf file.tgz .:从.tgz文件中解压文件。
- man:显示在线手册页。
- zip file.zip filenames:将文件压缩为.zip文件。
- unzip file.zip:解压.zip文件。课上用过的Linux命令 - 娄老师 - 博客园 (cnblogs.com)
第二章 编程背景
-
一、Linux中的文本编辑器及使用本章讲述了系统编程所需的背景信息;介绍了几种基于GUI的文本编辑器,比如vim、gedit和EMACS,可供读者编辑文件使用:展示了如何在命令和GUI模式下使用EMACS编辑器来编辑、编译和执行C语言程序;阐述了程序开发的步骤,这些编译链接步骤包括GCC、静态和动态链接、二进制可执行文件的格式和内容、程序执行和终止等;详细阐释了函数调用惯例和运行时堆栈的使用,包括参数传递、局部变量和栈帧。
- 程序开发步骤
(1)创建源文件:使用文本编辑器创建一个或多个程序源文件。
(2)用gcc把源文件转换成二进制可执行文件。
1.预处理(Preprocessing)
以“#”号开头的预处理指令如包含#include,宏定义制定#define等。在源程序中这些指令都放在函数之外,而且一般放在源文件的前面。经过预处理之后代码体积会大很多,相当于可执行文件一倍大小。预处理之后的程序还是文本,可以用文本编辑器打开。
2.编译(Compilation)
这里的编译不是指程序从源文件到二进制程序的全部过程,而是指将经过预处理文件之后的程序转换成特定汇编代码的过程。
3.汇编(Assemble)
汇编过程将上一步的汇编代码转换成机器码,这一步产生的文件叫做目标文件,是二进制格式。
4.链接(Linking)。
链接过程使用链接器将该目标文件与其他目标文件、库文件、启动文件等链接起来生成可执行文件。附加的目标文件包括静态连接库和动态连接库。 - 程序开发步骤
- makefile
-
make是一号程序,它按顺序读取Makefile或makefile,以自动有选择地执行编译链接。一个make文件由一系列目标项、依赖项和规则组成。当make程序读取makefile时,它通过比较依赖项列表中源文件的时间戳来确定要构建哪些目标项。
GDB调试工具
GDB调试工具是一个交互式调试工具,可以调试用C、C++和其他几种语言编写的程序。GDB是一个功能强大的调试工具,使用非常简单,但应该注意,所有调试工具只能提供有限的帮助,在某些情况下用处不大,所以程序开发的最佳方法是仔细设计程序的算法,然后根据算法编写程序代码。