Ubuntu 11.10上的C和C ++编程

时间:2011-10-29 07:38:37

标签: c++ c linux ubuntu

我最近安装了Ubuntu 11.10以及CodeBlocks IDE,我知道默认情况下我有gcc和std库。

我的问题是:

  • 您对Ubuntu上的新C ++程序员有什么建议吗?
  • 我应该从一开始就得到哪些图书馆?
  • 我错过了一个非常好的IDE? (YMMV,但我更喜欢在IDE中工作)
  • 从一开始我应该注意任何编程恩赐或陷阱?

10 个答案:

答案 0 :(得分:45)

您不需要IDE在Ubuntu上使用C或C ++进行编码。您可以使用一个好的编辑器(如emacs,您可以根据自己的需要进行配置。)。

新手的一些提示:

  1. 始终使用-Wall -Wextra进行编译,甚至可以使用-Werror -pedantic-errors
  2. 进行编译
  3. 编译器(gccg++)的参数顺序非常重要;我建议:

    • 一般警告和优化标记(例如-Wall-g以获取调试信息,-O-flto等,或-c以避免链接,。 ..)
    • 预处理器选项,例如-I include-dir -D defined-symbol (或-H,以了解哪些标头包含在内)等。
    • 要编译的源文件[s],如hello.cworld.cc
    • 如果要链接现有对象文件else.o,请在源文件
    • 之后添加它们
    • 链接器选项(如果相关),特别是-L library-dir (如果您的程序使用带dlopen(3)的插件,则可能-rdynamic ....)
    • 库(如-lfoo -lbar,从libfoo.so等较高级库到较低级库。
    • 输出文件(即产生的可执行文件),例如-o yourexec
  4. 始终纠正您的源代码,直到您完全没有警告为止。信任编译器的警告和错误消息。

  5. 了解如何使用make并撰写简单的Makefile - s;见this example

    还有其他建设者,例如http://omake.metaprl.org/

  6. 使用-g标志编译代码,让编译器生成调试信息;只有在调试程序时,才要求编译器进行优化(例如使用-O1-O2),尤其是在进行基准测试之前。
  7. 了解如何使用gdb
  8. 使用svngit等版本控制系统(即使是家庭作业)。 2015年,我建议git超过svn
  9. 备份你的工作。
  10. 学习使用valgrind来捕获内存泄漏。
  11. NB

    上述建议并非特定于Ubuntu 11.10,它们可以应用于其他Linux发行版和其他Ubuntu版本。

答案 1 :(得分:12)

QT Creator是一个很好的IDE,也适用于简单的基于Makefile的项目。此外,作为C ++程序员,您应该查看DiaDia2Code,以便从UML图中自动生成存根。

答案 2 :(得分:7)

由于您提出了多个问题,我将分别回答。

您对Ubuntu上的新C ++程序员有什么建议吗?

  • 了解一些构建系统,例如CMakeSCons。虽然了解make和Makefile的工作原理是有用的,但有一种趋势是从make转向更高级别的工具,这些工具也提供configure-like功能。 Make通常用于命令行构建,例如使用CMake,您可以使用make生成Makefile并构建项目。

  • 使用版本控制系统,例如gitMercurial。我还建议至少为了备份的目的,在github等外部服务上保留您关心的项目。

  • 注意编译器警告,但请记住,警告只能捕获一小部分可能的错误。使用static analysis toolsValgrind等动态分析工具可以获得更完整的图片。

我应该从一开始就获得哪些图书馆?

  • 你已经有了一个名为C++ Standard Library的主要人物。确保你知道它提供了什么。
  • Boost将涵盖除GUI以外的大部分剩余需求。
  • GtkmmQt是两个主要的C ++ GUI框架。

我错过了一个非常好的IDE? (YMMV,但我更喜欢在IDE中工作)

  • Eclipse - 很长一段时间以来,我一直认为它只是一个只有Java的IDE,但事实上它几乎适用于任何东西(我甚至用{{3}编写了我的博士论文}插件)和C / C ++支持一直在改进。此外,CMake可以生成TeXlipse项目文件。

  • Eclipse CDT - 另一个出色的C ++ IDE。它速度非常快,并且具有本机CMake支持

我从一开始就应该注意任何编程恩赐或陷阱?

  • 根据我的经验,C ++中最常见的错误来源是异常情况下的指针和资源管理。确保您理解并使用Qt Creator成语和RAII
  • 有关陷阱和建议的更完整列表,请参阅smart pointers的答案。

答案 3 :(得分:5)

Eclipse/CDT在Ubuntu上运行得非常好。

答案 4 :(得分:5)

除了已经提到的那些提示之外的一些提示:

  1. Valgrind是您寻找内存泄漏的朋友。您还可以使用valgrind --tool=callgrind和KCacheGrind来查看您的程序在执行时花费的时间。
  2. 如果您要分发您的程序,您应该学习autotools或cmake。第一个是经典工具,有点臃肿,第二个更现代。
  3. 如果您正在寻找轻量级的东西,Geany是一个不错的IDE。否则,请查看Code :: Blocks,Eclipse / CDT和NetBeans。
  4. 由于我不确定你对“std库”的意思,我应该提一下,除了标准的C库之外,还有很多POSIX functions and interfaces,这些都是大多数* nix系统所共有的,包括Mac OS X.

答案 5 :(得分:3)

Boost提供了一大堆常用的库,可以派上用场。无论如何,我不太确定这个问题在Q& A板上是否合适。

编辑:正如Basile所建议的,Makefile和学习使用gdb是很好的想法。有许多整洁的标志可用于gcc,用于帮助调试代码,优化代码,生成汇编指令等。

答案 6 :(得分:2)

我认为Netbeans很好。 Microsoft Windows和Linux中的相同UI。内置版本控制器并默认安装Git。 没有添加额外的库(作为QT的oposit)

答案 7 :(得分:1)

在编程的第一步,你不应该使用IDE,因为你将更好地理解背后发生的事情:) GCC或G ++和stdlib就足够了。您还应该阅读Makefiles,SVN(CVS,GIT),Autotools或CMake来管理您的项目。如果你想制作GUI应用程序,你应该学习GTK +或Qt。如果您想要真正的IDE满足您的需求,请尝试使用C / C ++插件的Eclipse。祝你好运:)

答案 8 :(得分:1)

如果您熟悉命令行,可以使用vim和gcc / g ++之类的编辑器来编译代码,也建议学习make svn git。

如果您不熟悉命令行或者您更喜欢使用UI:NetBeans也是一个很好的IDE,可以用来开发c / c ++和java。

安装netbeans:打开firefox并指向apt:// netbeans 我希望这会对你有所帮助。

答案 9 :(得分:1)

图书馆:我建议你使用Boost。你可以在其中找到许多库。 IDE:Eclipse和QTCreator是很好的IDE,但我认为使用text editor + makefile也很重要。 Vim,Emacs或Sublime Text是不错的选择。 永远记得备份你的代码。