如何开始Linux编程

10

我在Windows上从事C++和COM/ATL技术的开发工作已经有几年了。现在我想转向Linux编程。我了解Linux的基本架构,做过一些使用ncurses、sockets和音频库(终端应用程序)的项目。请问我应该熟悉哪些工具才能开始项目的开发?在Windows上,我先是从Win32编程入手,然后转向COM和ATL。Win32编程让我深入了解了Windows的内部结构。

能否为我提供开始学习Linux编程的步骤?

答:

你所说的专业项目是什么意思?我知道有许多基于脚本的工具被专业人士使用,因此可以称之为专业项目。但是,每个项目都会有最佳工具,那么是哪种类型的项目,音乐、Gui、服务器、图形、游戏? - cdeszaq
请为您的问题考虑一个更有描述性的标题。 - PeterAllenWebb
1
不要编写跨平台的代码,以便它在 Windows、Linux、BSD 和 Mac 上都有效。 - Tim Matthews
11个回答

13
  • gcc/g++
  • 了解shell基础知识:通常是bash(默认情况下)
  • make(您不必成为专家,甚至可以不在自己的工作中使用它,但您应该了解它)
  • 脚本语言(bash、ruby、python、tcl、perl;您可以选择其中一种)
  • 基本的Unix命令行实用程序(ls、cd等...)
  • 编辑器:vi或emacs是最流行的选择。
  • Linux。特别是您的发行版(Ubuntu很受欢迎;您可能想从那里开始)。了解如何调整您的环境以及在出现问题时如何修复。

其余内容取决于您想要做什么。

您不需要成为任何一个方面的专家;您会随着时间而学习。


1
他问怎样开始编程(不是Bash单行命令)。 - Quamis
1
他明确地标记了他的问题是关于C/C++的,为什么你要建议bash、ruby、python等其他语言呢? - kazanaki
仅了解Linux上的C/C++ API只能让你走一部分路--通常你需要了解shell脚本编写,这样你才能编写构建脚本、安装脚本等。 - the_mandrill

12

这取决于你想做什么...

你会开发GUI应用程序吗?学习Qt、GTK或wxWidgets。你将进行设备驱动程序开发吗?学习直接使用C,而不仅仅是C ++。在Linux下许多激动人心的软件开发都使用Python和Perl(以及其他动态语言在较小程度上),所以你几乎肯定需要学习其中之一。


8

实用的答案

我理解你为什么这样问,但Linux不是Windows,所以没有一个直接的答案。实际上我们在谈论GNU/Linux和所有自由软件生态系统,所以你需要学习的取决于你想做什么。

如果你更喜欢系统编程,你需要研究Linux内核并提高你的C语言技能。

如果你想编写工具,脚本语言(特别是Ruby和Python)将是你的首选工具,你还需要选择一个GUI框架(GTK、QT和wxWidget是常用的)。

如果更多关注网络和Web编程:Python、Ruby、PHP或Java都可以胜任。

好消息

在Linux环境下,你有选择的余地,因为很多人使用很多不同的工具。这可能看起来很混乱,并且通常确实如此,但它的效果还不错。

所以不要考虑你必须学什么,而是专注于两个问题:

  • 我想加入一个项目吗?那么技术将由你加入的项目选择。所以选择一个你想学习的技术的项目。
  • 我想开始自己的项目吗?然后技术将由你依赖的现有工具选择。大多数情况下,你会有选择的余地,所以享受你的新自由并学习你想要的技术。

自由意味着你可以选择。


3

开始阅读书籍《高级Linux编程》,该书也可免费获取PDF版本。

不要害怕"高级"关键字。从您的帖子细节(ncurses、sockets)来看,您已经很"高级"了。

您还可以稍后查看glib库(GTK+/GNOME的标准组件,但也用于命令行应用程序中)。

如果您确实必须使用C++进行编程,请阅读QT的全部文档,然后就可以开始了。


2

最好直接从源头获取(因为它包括:可浏览的免费版本、勘误等):http://www.catb.org/esr/writings/taoup/ - Olivier Dulac

1
我建议学习CMake - 它是一个很棒的跨平台构建工具,比make/autotools更容易使用。

1

我还建议您学习STL和Boost——后者在Linux中编写C++应用程序时特别有用,因为您可以获得线程、文件系统、正则表达式等库。此外,如果需要,代码可以迁移到Windows。这就是我开始使用Linux的方式——我将一个Windows项目转换为使用STL/Boost,并添加了基于浏览器的UI。一旦它在Windows上运行起来——但代码中没有任何Windows特定的内容——我开始学习Linux基础知识(gcc、make等),并很快使其工作。


1

利用您已经掌握的COM知识,并学习类似于TAO的东西。显然,在Unix世界中没有ATL或WTL...因此,您需要投入时间来学习STL-好消息是STL也存在于Windows平台上。 Boost将有助于使您在平台之间更轻松地切换,因此您也应该学习它。

除此之外,这真的取决于您想要做什么。


0

您能详细说明您希望在Linux编程方面做些什么吗?无论如何,这里可能包含了您希望学习的大部分内容。


0

我建议您开始使用 Gentoo,起初可能会有些困难,但是在一段时间后(如果您具备基本的 Linux 理解能力,大约需要 2 个月或更短的时间),您将能够使用每个发行版,并且当您按下/输入某些内容时,您会非常清楚地知道系统上会发生什么以及如何操作。我认为,花费更多的时间学习 Gentoo (相对于其他发行版来说,学习 Gentoo 更难)将得到更多回报。

这对于编写 Linux 程序将会很有帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接