如何开始在* nix开发

有没有一个好的“如何做”或“入门”指南开始使用g ++和gdb?

一些背景。 体面的程序员,但到目前为止,我在Visual Studio中完成了Windows上的所有工作。

我有一点使用terminal编译文件的经验(没有太多.h和1或2 .cpp)。 但除此之外没有什么。

任何人都知道如何在Linux上开始编码一个很好的入门?

Solutions Collecting From Web of "如何开始在* nix开发"

阅读一些好书,特别是高级Linux编程和高级Unix编程 。 请阅读Linux文档项目中的高级bash脚本指南和其他文档

显然,在笔记本电脑上安装一些Linux发行版(不是在某些虚拟机上,而是在真正的磁盘分区上)。 如果你有一个像发行版一样的debian,运行aptitude build-dep gcc-4.6 gedit就可以得到很多有趣的开发包。

学习一些命令行技能。 学习使用man命令; 在安装manpagesmanpages-dev软件包后,输入man man (使用空格键“滚动文本”, q键退出)。 请阅读介绍(2)手册页。 当你忘记了如何使用命令如cp试试cp --help

使用像git这样的版本控制系统,即使是一个人的小项目也是如此。

备份你的文件。

在Linux , 内核 , 系统调用 , 免费软件 , X11 , Posix , Unix上阅读几个相关的Wikipedia页面

尽量使用命令行。 例如,尝试在命令行上执行一个或多个事情。 避免使用桌面,也可能使用鼠标。 学习使用emacs

阅读有关GNU make等构建器程序

从他们的源代码(例如从sourceforge或freecode或github )中检索几个免费软件,并练习编译和编译它们。 研究他们的源代码

在命令行(在终端中)启动的基本提示(如果找不到命令,则需要安装提供它的包)。

  • 运行emacs ; 有一个教程菜单; 练习半小时。

  • 编辑一个helloworld.c程序( main调用一些hello函数)

  • 使用gcc -g -Wall helloworld.c -o helloworld编译它gcc -g -Wall helloworld.c -o helloworld ; 改善你的代码,直到没有警告给出。 总是通过-Wallgccg++来获得几乎所有的警告。

  • 运行./helloworld

  • 然后用gdb ./helloworld调试它

    1. 使用help命令
    2. 使用b main命令在main添加一个断点,同样为你的hello函数添加一个断点。
    3. 使用rgdb下运行它
    4. 使用bt来获得回溯
    5. p打印一些变量
    6. 使用c继续执行调试的程序。
  • 编写一个小小的Makefile来使用make来构建你的helloworld程序

  • 学习如何从Emacs中调用make (使用Mx compile )和gdb (使用Mx gdb

了解更多关于valgrind (检测大部分内存泄漏)。 也许可以考虑在你的一些应用程序中使用Boehm的GC 。

你有很多东西要学习。 我不会给你详细的信息,但是作为一个已经完成了unix和c / c ++开发几十年的人,现在我将尝试给你一些开始的话题。

我的主要建议是开始试验。 用C或者C ++编写最简单的程序(打印出“Hello there,world!”是传统的),并找出如何从命令行编译和运行它。 然后,一旦你有了一个编译版本,在调试器下启动它,并且使用断点,打印表达式等等等等。一旦你得到了这个最简单的程序并运行,并且你明白调试器是什么告诉你,添加一个类,函数,结构,或其他任何感觉像一个小小的步骤,再次通过循环。 如果你从一个非常大的程序开始,你将以更快的速度进行。

还是在很高的水平,这里有一些你需要弄清楚的话题。 请注意,“从小开始学习”的方法适用于以下任何主题。

  • 运行g++ :它在命令行语法上有很好的在线文档,尽管一开始你一定会发现它很吓人,但是试着去寻找最简单的起点。
  • 找一个文本编辑器来使用。 Vimemacs是传统的(而且功能非常强大),但是两者的学习曲线都比较陡峭。 如果你有人来帮助你,那就更好了。 还有其他的选择,但作为一个emacs用户,我恐怕我不熟悉它们。
  • 熟悉gdb 。 这是理解你的程序的一个非常强大的工具。 再次,它有广泛的在线文档,将回报密切阅读​​。
  • 对标准的unix命令的一些熟悉将是有用的: lscd和导航unix目录的移动基础; grep快速搜索源文件。
  • 你必须习惯于使用命令行方法而不是ide方法 。 前者是传统的unix开发人员模型,您可以将其他工具集合在一起,而不是让ide隐藏大部分这些知识。

如果你的项目是多文件的,特别是如果是整个学期的项目,你也可以考虑学习一些关于下列主题的内容。

  • Make是一个描述如何编译和链接一个多文件项目的工具,这样你就不必每次都要记住如何手动完成。 不幸的是,由于使用起来非常棘手,所以这个名字是当之无愧的,但是在跨越多个目录的大型项目中,情况大多如此,网上可能有很多简单的例子。
  • 我会强烈考虑使用githg之类的源代码控制系统,即使是一些相对较小的项目也是如此。 有一个你已经做了存档的版本是非常安全的,所以你可以快速备份。 githg对于一个小型的一次性项目来说都是过分的,但是值得自己学习。 我今天所理解的传统观点是,它们在哲学和核心功能方面非常相似,但是在命令行级别hg肯定更加一致,因此更容易开始。

我怀疑这是相当吓人的,特别是如果你之前没有暴露于unix命令环境。 我重新强调了上面的第一条建议:开始简单的学习和试验。 这最大限度地减少了在任何给定的时间点你不得不把头的东西的数量。