我在过去的几年中一直在使用Windows的C ++和COM / ATL。 现在我想转移到Linux编程。 我知道Linux的基本架构。 我做了一些使用ncurses,套接字和audio库(terminal应用程序)的项目。 我应该熟悉使用哪个工具来开始项目。 在Windows中,我已经开始使用Win32编程,然后移动到COM和ATL。 Win32编程给了我Windows的见解。
你能给我开始Linux编程的步骤吗?
Msys在Powershell中 – 没有这样的文件或目录
kbhit()作为转义触发器
如何debugging终止在未处理的exception的程序?
检测字符设备是否在Linux中与termios api(c ++)断开连接
开始阅读高级Linux编程这本书也可作为免费的PDF。
不要害怕高级关键字。 从你的帖子(ncurses,套接字)的细节你已经“先进”。
您也可以稍后查看glib库(GTK + / GNOME的标准组件),但也可用于命令行应用程序。
如果你必须用C ++编程,阅读QT的全部文档,你就可以走了。
GCC /克++
了解shell基础知识:可能是bash(通常是默认值)
使(你不必成为专家,甚至在你自己的工作中使用它,但你应该明白)
一个脚本语言(bash,ruby,python,tcl,perl;你可以选择)
基本的Unix命令行工具(LS,CD等)
一个编辑器:vi或emacs是最流行的选择。
Linux操作系统。 特别是你的发行版(ubuntu很流行,你可能想从那里开始)。 知道如何驯服你的环境,以及如何修复事情。
剩下的就取决于你想做什么。
你不需要成为这方面的专家; 你会学习一段时间。
取决于你想要做什么…
你打算做GUI应用吗? 学习Qt或GTK或wxWidgets。 你打算做设备驱动程序开发吗? 直接了解C,而不仅仅是C ++。 Linux下很多令人兴奋的软件开发都发生在Python和Perl(以及其他动态语言)上,所以你几乎肯定会学到其中的一种。
务实的回答
我明白你为什么这样问你的问题,但是Linux不是Windows,所以没有直接的答案。 其实我们正在谈论GNU / linux +所有的免费软件生态系统,所以你必须学习的东西很大程度上取决于你想要做什么。
如果你更多地进入系统编程,你将看到Linux内核,并需要在你的C技能上工作。
如果你想编写实用程序,脚本语言(特别是ruby和python)将是你的选择工具,你必须选择一个GUI框架(GTK,QT和wxWidget展示方式)。
如果是更多关于网络和网络编程的话:python,ruby,PHP或者java都可以。
好消息
在Linux环境下,你可以选择,因为很多人使用了很多不同的工具。 它可以看起来很混乱,而且往往是,但它并没有那么糟糕。
所以,不要想着你必须学习什么,并把重点放在两个问题上:
我想加入一个项目吗? 然后,技术将由您加入的项目选择。 所以选择一个使用你想学习的技术的项目。
我想开始自己的项目吗? 然后,技术将由您将依靠的现有工具选择。 大多数时候,你会有选择,所以享受你的新自由,并学习你想要的技术。
免费,如在自由队友,意味着你可以选择。
阅读UNIX编程艺术http://ecx.images-amazon.com/images/I/51HJF%2B%2BjseL._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight.35,-76_AA240_SH20_OU01_.jpg
这将帮助你理解为什么事情是在一个基于* unix的系统中完成的。
我还建议你学习STL和Boost–后者在Linux中编写C ++应用程序时特别有用,例如线程,文件系统,正则表达式等库。如果需要,还可以将代码移植回Windows。 这就是我在Linux中开始的过程 – 我使用了一个Windows项目,并转换为使用STL / Boost并添加了一个基于浏览器的UI。 一旦在Windows中启动并运行,但在代码中没有实际的Windows细节,我就开始学习Linux基础知识(gcc,make等),并迅速开始工作。
借鉴已经辛苦得到的COM知识,学习TAO等 。 显然,unix世界中没有ATL或WTL …所以你必须花时间学习STL – STL在windows上也存在好消息。 Boost会帮助你在两个平台之间更容易,所以你也应该学习。
除此之外,这真的取决于你想要做什么。
我建议学习CMake – 这是一个很棒的跨平台构建工具,比make / autotools更容易使用。
我建议你从使用Gentoo开始,在第一周应该很难,但是过了一段时间(如果你有基本的linux知识,就说2个月或更少),你将能够使用每一个发行版,当你按/数字的时候,你的系统会发生怎样的变化,我认为你花费在Gentoo上的时间会多一些(学习gentoo比其他发行版更难)。 而这个我觉得在编写linux时会很有帮助。
在为Linux开发的时候,我倾向于坚持使用vim,gcc,gdb(从命令行,没有前端),svn,cscope,Valgrind,make(不是我是make的粉丝,我承认)。 存在各种图形前端,甚至IDE,但我不喜欢其中任何一个。
就Linux编程而言,你能否详细说明你希望做的事情? 无论如何, 这可能是你希望经历的大部分。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。