Linux系统编程

时间:2010-05-21 20:33:25

标签: linux linux-kernel systems-programming

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

基本上,我想知道:

  1. 学习和追求哪种语言(我认为主要是C和C ++)?
  2. 如何/在哪里学习特定于系统编程的语言?书籍,网站,博客,教程等。
  3. 我可以从基础开始的任何其他好地方吗?
  4. 任何好的图书馆开始?
  5. 我需要什么环境设置(或大约)?假设linux必须在那里,但我有一个linux盒子,我很少使用GUI登录(总是使用SSH)。 GUI是否更有用,或者VI编辑器就足够了? (如果问题的这一部分应该发送到serverfault.com ,请告诉我。)
  6. PS:只是为了澄清一下,通过系统编程,我的意思是编写设备驱动程序,系统工具,编写本机应用程序,这些应用程序在Linux平台上不存在但在其他程序上,与Linux内核一起使用等。

5 个答案:

答案 0 :(得分:6)

如果您正在使用内核,则必须使用C.有几本书,如Essential Linux设备驱动程序,它们为您提供结构的基础知识,运行代码的位置等。

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

您可以在所选编辑器的命令行中执行所有操作 - 此处没有明确的胜利,选择您喜欢的内容。

答案 1 :(得分:3)

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

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

答案 2 :(得分:3)

你的问题非常广泛。 “Linux上没有的本机应用程序”涵盖了办公套件等,我不考虑系统编程。我会一次关注一件事(比如设备驱动程序)。关于此问题有很多现存问题,包括Linux Programming BookWhat IDE would be good for linux kernel driver developmentAre there recommended tutorials for writing drivers for Gnu/Linux?,和 Ubuntu Linux, what programming languages should I learn?

要学习C89,我肯定会深入研究The C Programming Language (2nd Edition)

答案 3 :(得分:1)

纳米是我最喜欢的编辑器。 Vi也很好。我没有花时间学习它,但它们都可以帮助你的编程经验。一旦它归结为代码中的棘手错误,安装SSH驱动器,然后使用您最喜欢的GUI程序远程打开文件。

答案 4 :(得分:0)

大多数系统编程都是在C中完成的,这里已经提到过。你需要了解一些理解思维方式的优秀书籍,以及正确的unix / Linux做事方式将是Eric Raymond的“Unix编程艺术”和Richard Stevens的“Unix环境中的高级编程”。市场上出现了一些新书,如Robert Love Book“Linux系统编程”以及“linux编程接口”,它们是up2date,但它们并没有像我前面提到的那样讨论原始的原理和想法。 / p>

相关问题