7

我想进入 linux 系统编程,想知道如何处理以及从哪里开始。我来自 Web 开发背景(Python、PHP),但我也知道一些 C 和 C++。

本质上,我想知道:

  1. 学习和追求哪种语言(我认为主要是 C 和 C++)?
  2. 如何/在哪里学习那些特定于系统编程的语言?书籍、网站、博客、教程等。
  3. 我可以从基础开始的其他任何好地方吗?
  4. 有什么好的图书馆可以开始吗?
  5. 我需要什么环境设置(或近似值)?假设 linux 必须在那里,但我有一个 linux 盒子,我很少使用 GUI 登录(总是使用 SSH)。是 GUI 更有帮助还是 VI 编辑器就足够了?(请让我知道这部分问题是否应该转到 serverfault.com

PS:澄清一下,系统编程是指编写设备驱动程序、系统工具、编写 Linux 平台上不存在但在其他平台上的本机应用程序、使用 linux 内核等。

4

5 回答 5

6

如果你在玩内核,你必须使用 C。有几本书,比如 Essential Linux Device Drivers,它为你提供了结构的基础知识,在哪里运行你的代码等。

通常,许多服务器是用 C 编写的,有时是用 C++ 编写的。流行的库包括 Glib、libevent、boost(用于 C++)。

您可以在您选择的编辑器中从命令行执行所有操作 - 这里没有明显的胜利,选择您喜欢的。

于 2010-05-21T20:36:50.580 回答
3

要真正进入 linux 系统编程,我会说 C 和 x86 汇编。

对于应用程序,Linux 支持多种语言,python、C++、fortran、perl 等,因此请选择您要使用的语言。

于 2010-05-21T20:37:40.723 回答
3

你的问题很广泛。“Linux 上不存在的本机应用程序”涵盖了诸如办公套件之类的东西,我不认为是系统编程。我会一次只专注于一件事(比如设备驱动程序)。有很多关于这方面的现有问题,包括Linux 编程书什么 IDE 对 linux 内核驱动程序开发有好处是否有推荐的为 Gnu/Linux 编写驱动程序的教程?,和 Ubuntu Linux,我应该学习哪些编程语言?.

要学习 C89,我肯定会深入研究C 编程语言(第 2 版)

于 2010-05-21T20:41:04.517 回答
1

Nano 是迄今为止我最喜欢的编辑器。维也不错。我没有花时间学习它,但是它们都可以帮助您获得编程经验。一旦归结为代码中的棘手错误,请安装 SSH 驱动器,然后使用您最喜欢的 GUI 程序远程打开文件。

于 2010-05-21T20:39:47.330 回答
0

正如这里已经提到的,大部分系统编程都是用 C 语言完成的。你需要阅读一些好书来理解这种心态,以及正确的 Unix/Linux 做事方式,比如 Eric Raymond 的“Unix 编程艺术”和 Richard Stevens 的“Unix 环境中的高级编程”。市场上有一些新书,例如 Robert Love Book 《Linux 系统编程》以及《Linux 编程接口》,它们都是最新的,但它们并没有像我之前提到的那样讨论最初的原理和思想。

于 2012-06-22T20:20:17.667 回答