如何开始开发* nix

时间:2012-10-23 02:41:27

标签: linux

是否有一个很好的'使用方法'或'入门指南'开始使用g ++和gdb?

一些背景知识。体面的程序员,但到目前为止,我已经在Visual Studio中的Windows上做了一切。

我有一点使用终端编译文件的经验(不超过.h和1或2 .cpp)。但除此之外什么都没有。

任何人都知道如何在Linux上开始编码?

2 个答案:

答案 0 :(得分:4)

阅读一些好书,特别是Advanced Linux ProgrammingAdvanced Unix Programming。另请阅读advanced bash scripting guide

中的Linux Documentation Project和其他文档

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

学习一些命令行技能。学习使用man命令;安装manpagesmanpages-dev软件包后,键入man man(使用空格键“滚动文本”,使用q键退出)。另请阅读intro(2)手册页。当您忘记如何使用cp之类的命令时,请尝试cp --help

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

备份您的文件。

Linuxkernelssyscallsfree softwareX11PosixUnix上阅读几个相关的维基百科页面

尽量使用命令行。例如,尝试在命令行上执行一周或更长时间的操作。避免使用您的桌面,可能还有鼠标。学习使用emacs

了解像GNU make

这样的构建程序

从源代码中检索多个免费软件(例如从sourceforgefreecodegithub)并练习构建和编译它们。研究他们的源代码

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

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

  • 修改helloworld.c计划(main调用某个hello功能)

  • gcc -g -Wall helloworld.c -o helloworld编译;改进你的代码直到没有给出警告。始终将-Wall传递给gccg++以获取几乎所有警告。

  • 使用./helloworld

  • 运行它
  • 使用gdb ./helloworld调试,然后

    1. 使用help命令
    2. 使用b main命令在main中添加断点,同样为hello函数添加断点。
    3. 使用gdb
    4. r下运行它
    5. 使用bt获取回溯
    6. 使用p打印一些变量
    7. 使用c继续执行已调试的程序。
  • 写一个小Makefile,以便能够使用helloworld构建您的make计划

  • 了解如何从Emacs内部致电makeM-x compile}和gdbM-x gdb}

了解有关valgrind的更多信息(以检测大多数内存泄漏)。也许可以考虑在某些应用程序中使用Boehm's GC

答案 1 :(得分:3)

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

我的主要建议是开始尝试。用C或C ++编写最简单的程序(打印“Hello there,world!”是传统的),并弄清楚如何从命令行编译和运行它。然后,一旦你有一个编译版本,在调试器下启动它,并使用断点,打印表达式等等。一旦你有这个最简单的程序启动并运行,你有点理解调试器是什么告诉你,添加一个类,函数,结构或其他任何感觉像是一个很好的小步骤,然后再次循环。与开始使用非常大的程序相比,这种方式的进行速度要快得多。

仍然处于非常高的水平,这里有一些主题,你需要至少弄清楚一点。请注意,“通过小型学习”方法适用于以下任何主题。

  • 运行g++:它在命令行语法方面有很好的在线文档,虽然你最初会发现它令人生畏,但试着寻找最简单的起点。
  • 找到要使用的文本编辑器。 Vimemacs是传统的(非常强大)但两者都有相对陡峭的学习曲线。如果你周围有人帮助你,那就更好了。还有其他选择,但作为emacs用户自己,我担心我对它们并不熟悉。
  • 熟悉gdb。它是理解您的程序的一个非常强大的工具。同样,它有广泛的在线文档,将回报仔细阅读。
  • 熟悉标准的unix命令非常有用:lscd以及导航unix目录的移动基础知识; grep用于快速搜索源文件。
  • 您必须习惯命令行方法而不是 ide方法。前者是传统的unix开发人员模型,您可以将其他操作集合在一起,而不是让ide隐藏大部分知识。

如果您的项目是多文件的,特别是如果它是一个完整学期的项目,您可能还会考虑学习以下主题。

  • Make是一个用于描述如何编译和链接多文件项目的工具,这样您就不必每次都记住如何手动完成。遗憾的是,Make因使用起来很棘手而享有当之无愧的声誉,但在跨越多个目录的大型项目中,这种情况大多都是如此,并且在线可能有很好的简单示例。
  • 我强烈考虑使用源代码控制系统,例如githg,即使对于一些相对较小的项目也是如此。拥有已完成版本的存档版本更加安全,以便您可以快速备份。对于一个小型的一次性项目,githg都是过度的,但它们值得自学。我今天理解的传统智慧是它们在哲学和核心功能方面非常相似,但hg在命令行级别上肯定更加一致,因此更容易入手。

我怀疑这是相当令人生畏的,特别是如果你以前实际上没有接触到unix命令环境。我再次强调我上面的第一条建议:通过简单和实验来学习。这可以最大限度地减少您在任何给定时间点缠绕头部的新东西的数量。