我在Windows上从事C++和COM/ATL技术的开发工作已经有几年了。现在我想转向Linux编程。我了解Linux的基本架构,做过一些使用ncurses、sockets和音频库(终端应用程序)的项目。请问我应该熟悉哪些工具才能开始项目的开发?在Windows上,我先是从Win32编程入手,然后转向COM和ATL。Win32编程让我深入了解了Windows的内部结构。
能否为我提供开始学习Linux编程的步骤?
答:我在Windows上从事C++和COM/ATL技术的开发工作已经有几年了。现在我想转向Linux编程。我了解Linux的基本架构,做过一些使用ncurses、sockets和音频库(终端应用程序)的项目。请问我应该熟悉哪些工具才能开始项目的开发?在Windows上,我先是从Win32编程入手,然后转向COM和ATL。Win32编程让我深入了解了Windows的内部结构。
能否为我提供开始学习Linux编程的步骤?
答:其余内容取决于您想要做什么。
您不需要成为任何一个方面的专家;您会随着时间而学习。
这取决于你想做什么...
你会开发GUI应用程序吗?学习Qt、GTK或wxWidgets。你将进行设备驱动程序开发吗?学习直接使用C,而不仅仅是C ++。在Linux下许多激动人心的软件开发都使用Python和Perl(以及其他动态语言在较小程度上),所以你几乎肯定需要学习其中之一。
我理解你为什么这样问,但Linux不是Windows,所以没有一个直接的答案。实际上我们在谈论GNU/Linux和所有自由软件生态系统,所以你需要学习的取决于你想做什么。
如果你更喜欢系统编程,你需要研究Linux内核并提高你的C语言技能。
如果你想编写工具,脚本语言(特别是Ruby和Python)将是你的首选工具,你还需要选择一个GUI框架(GTK、QT和wxWidget是常用的)。
如果更多关注网络和Web编程:Python、Ruby、PHP或Java都可以胜任。
在Linux环境下,你有选择的余地,因为很多人使用很多不同的工具。这可能看起来很混乱,并且通常确实如此,但它的效果还不错。
所以不要考虑你必须学什么,而是专注于两个问题:
自由意味着你可以选择。
开始阅读书籍《高级Linux编程》,该书也可免费获取PDF版本。
不要害怕"高级"关键字。从您的帖子细节(ncurses、sockets)来看,您已经很"高级"了。
您还可以稍后查看glib库(GTK+/GNOME的标准组件,但也用于命令行应用程序中)。
如果您确实必须使用C++进行编程,请阅读QT的全部文档,然后就可以开始了。
我还建议您学习STL和Boost——后者在Linux中编写C++应用程序时特别有用,因为您可以获得线程、文件系统、正则表达式等库。此外,如果需要,代码可以迁移到Windows。这就是我开始使用Linux的方式——我将一个Windows项目转换为使用STL/Boost,并添加了基于浏览器的UI。一旦它在Windows上运行起来——但代码中没有任何Windows特定的内容——我开始学习Linux基础知识(gcc、make等),并很快使其工作。
我建议您开始使用 Gentoo,起初可能会有些困难,但是在一段时间后(如果您具备基本的 Linux 理解能力,大约需要 2 个月或更短的时间),您将能够使用每个发行版,并且当您按下/输入某些内容时,您会非常清楚地知道系统上会发生什么以及如何操作。我认为,花费更多的时间学习 Gentoo (相对于其他发行版来说,学习 Gentoo 更难)将得到更多回报。
这对于编写 Linux 程序将会很有帮助。