《Linux程序设计》学习笔记01——入门

 

什么是 Linux

Linux 是一个类 UNIX 内核的可以自由发布的实现版本,是一个操作系统的底层核心。几乎所有为 UNIX 编写的程序都可以在 Linux 上编译运行。

Linux 是由赫尔辛基大学的 Linus Torvalds 开发的,期间得到了因特网上广大 UNIX 程序员的帮助。它最初只是受 Andy Tanenbaum 教授的 Minix (一个小型类 UNIX 系统)启发而开发的个人爱好的程序,但后来逐步发展成为一个拥有自己版权的完整系统。其目的是,保证 Linux 除包含自由发布的代码外,不会集成任何私有代码

 

GNU 项目和自由软件基金会

Linux 社团支持自由软件的概念,即软件本身不应受限,它们应该遵守 GNU 通用公共许可证( GPL )。虽然获得软件可能要支付一定的费用,但此后就可以随意使用,并且它们通常是以源代码的形式发布的。

GPL 规则限制下,所有基于这种概念开发的软件都应遵循 GPL 。大家可以在 http://www.gnu.org 上找到更多关于自由软件的概念。

 

Linux 程序

Linux 应用程序表现为两种特殊类型的文件:可执行文件和脚本文件。可执行文件 是计算机可以直接运行的程序,它们相当于 Windows 中的 exe 文件。脚本文件 是一组指令的集合,这些指令将由另一个程序(解释器,比如 shell 或者 perl )来执行,它们相当于 Windows 中的 bat 文件、 cmd 文件或解释执行的 BASIC 程序。

Windows 相比, Linux 程序并不要求可执行程序或脚本具有特殊的文件名或扩展名。当登录 Linux 系统时,我们与一个 shell 程序(通常是 bash )进行交互,它像 Windows 中的命令提示窗口一样运行程序。在当前环境下,必定有一组环境变量与之匹配,其中 PATH 变量 指明了当前可以自动搜索的目录:当需要执行的程序在 PATH 指定的目录中时,你将不需指明待执行程序的全路径(除非有同名程序存在);否则必须指定需要执行程序的路径(相对路径或者绝对路径)。

如果你还是 Linux 环境下的初学者,一定要注意 Linux 使用正斜线( / 分割文件名里的目录名,而不是像 Windows 那样使用反斜线( / )。

建议 :如果你刚刚接触 Linux ,请先学会使用 Linux 再来学习如何在 Linux 环境下编程。

 

C 语言编译器

这里我们使用 GNU C 编译器,简称为 gcc 。因为它随 Linux 的发行版一起提供,并且它支持 ANSI C 的标准语法。在 http://www.gnu.org 上可以获取 gcc 软件包。

建议 :如果你是初学 C 语言,请编写经典的 HelloWorld 程序来开始你的学习之旅。

 

开发系统导引

Linux 开发人员来说,了解软件工具和开发资源在系统中存放的位置是很重要的。

应用程序 应用程序通常存放在系统为之保留的特定目录中。系统为正常使用提供的程序,包括用于程序开发的工具,都可以在目录 /usr/bin 中找到;系统管理员为某个特定的主机或本地网络添加的程序通常可在目录 /usr/local/bin /opt 中找到。

建议 :在 /usr/local 目录结构下编译、运行自己的程序,并访问必须的文件。

头文件 C 语言来说,头文件几乎总是在 /usr/include 目录及其子目录下。那些依赖于特定 Linux 版本的头文件通常可以在目录 /usr/include/sys /usr/include/linux 中找到。

在调用 C 语言编译器时,我们可以使用 -I 标志来包含保存在子目录或非标准位置中的头文件,比如: $ gcc –I/usr/openwin/include fred.c 。它指示编译器不仅在标准位置,也在 /usr/openwin/include 目录中查找 fred.c 中包含的头文件。

提示 :可以使用 grep 命令来搜索包含某些特定定义和函数原型的头文件。

库文件 库是一组预先编译好的函数的集合,这些函数都是按照可以重用的原则编写的。标准库文件一般存储在 /lib /usr/lib 目录中。

库文件的名字总是以 lib 开头,随后的部分指明这是什么库(比如, libm 就代表了数学库)。文件名的最后部分以 . 开始,然后给出库文件的类型: .a 代表传统的静态函数库; .so 代表共享函数库。

提示 :如何编写及使用两种函数库可以参看《精通 UNIX C 语言编程及项目实践》的 学习笔记 1

你可能感兴趣的:(《Linux程序设计》笔记)