Ubuntu 11.10 上的 C 和 C++ 编程[关闭]

2024-10-21 09:14:00
admin
原创
71
摘要:问题描述:我最近安装了 Ubuntu 11.10 及其 CodeBlocks IDE,并且我知道我默认拥有 gcc 和 std 库。我的问题是:您对 Ubuntu 上的新 C++ 程序员有什么建议吗?我应该从一开始就获得哪些库?我是否缺少一个真正优秀的 IDE?(YMMV,但我更喜欢在 IDE 中工作)从一开...

问题描述:

我最近安装了 Ubuntu 11.10 及其 CodeBlocks IDE,并且我知道我默认拥有 gcc 和 std 库。

我的问题是:

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

  • 我应该从一开始就获得哪些库?

  • 我是否缺少一个真正优秀的 IDE?(YMMV,但我更喜欢在 IDE 中工作)

  • 从一开始我就应该知道哪些编程的好处或陷阱?


解决方案 1:

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

给新手的一些建议:

  1. 总是编译-Wall -Wextra,甚至可能编译 -Werror -pedantic-errors

  2. gcc编译器(或)的参数顺序g++非常重要;我建议:

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

  2. 了解如何使用make和书写简单的Makefile-s;参见此示例。

还有其他构建器,例如http://omake.metaprl.org/

  1. 使用标志编译您的代码-g以使编译器生成调试信息;仅当您调试了程序后,才要求编译器进行优化(例如使用-O1-O2),尤其是在基准测试之前。

  2. 了解如何使用gdb

  3. 使用版本控制系统,例如svngit(即使是家庭作业)。2015 年我推荐使用git,而不是svn

  4. 备份你的工作。

  5. 学习使用valgrind来查找内存泄漏。

注意:

上述建议并不针对 Ubuntu 11.10,它们也适用于其他 Linux 发行版和其他 Ubuntu 版本。

解决方案 2:

QT Creator是一款出色的 IDE,它也能很好地处理基于 Makefile 的简单项目。此外,作为 C++ 程序员,您应该查看Dia和Dia2Code,以自动从 UML 图表生成存根。

解决方案 3:

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

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

  • 学习一些构建系统,例如CMake或SCons。虽然了解make和 Makefile 的工作原理很有用,但人们倾向于放弃 make,转而使用更高级的工具,这些工具也提供类似 configure 的功能。Make 通常用于命令行构建,例如,使用 CMake,您可以生成 Makefile 并使用 make 构建项目。

  • 使用版本控制系统,例如git或Mercurial。我还建议将您关心的项目保存在某些外部服务(例如github)上,至少出于备份目的。

  • 注意编译器警告,但请记住警告只能捕获一小部分可能的错误。使用静态分析工具和动态分析工具(如Valgrind)可以获得更完整的信息。

我应该从一开始就获得哪些库?

  • 您已经获得了主要的C++ 标准库。确保您知道它提供了什么。

  • Boost将满足除 GUI 之外的大部分剩余需求。

  • Gtkmm和Qt是两个主要的 C++ GUI 框架。

我是否缺少一个真正优秀的 IDE?(YMMV,但我更喜欢在 IDE 中工作)

  • Eclipse - 长期以来,我一直认为它是一款仅适用于 Java 的 IDE,但事实上,它是一款适用于几乎所有领域的出​​色 IDE(我甚至使用TeXlipse插件在其中撰写了我的博士论文),并且 C/C++ 支持一直在改进。此外,CMake 还可以生成Eclipse CDT项目文件。

  • Qt Creator - 另一个出色的 C++ IDE。它非常快,并且具有原生 CMake 支持

从一开始我就应该知道哪些编程的好处或陷阱?

  • 根据我的经验,C++ 中最常见的错误来源是指针和异常情况下的资源管理。请确保您理解并使用RAII习语和智能指针。

  • 欲了解更完整的陷阱和建议列表,请参阅此问题的答案。

解决方案 4:

除了已经提到的提示之外,还有一些提示:

  1. Valgrind是查找内存泄漏的好帮手。您还可以使用valgrind --tool=callgrindKCacheGrind 查看程序在执行过程中花费的时间。

  2. 如果你要分发你的程序,你应该学习 autotools 或 cmake。前者是一个经典工具,有点臃肿,后者则更现代。

  3. 如果您正在寻找轻量级的 IDE,Geany 是一款不错的 IDE。否则,请看看 Code::Blocks、Eclipse/CDT 和 NetBeans。

  4. 由于我不确定您所说的“std 库”是什么意思,我应该提一下,除了标准 C 库之外,还有许多POSIX 函数和接口,它们在大多数 *nix 系统(包括 Mac OS X)中都很常见。

解决方案 5:

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

解决方案 6:

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

编辑:正如 Basile 所建议的,Makefiles 和学习使用gdb都是好主意。还有很多简洁的标志可供使用gcc,有助于调试代码、优化代码、生成汇编指令等。

解决方案 7:

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

解决方案 8:

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

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

要安装 netbeans:打开 Firefox 并指向 apt://netbeans 我希望这对您有所帮助。

解决方案 9:

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

解决方案 10:

库:我推荐你使用 Boost。你可以在其中找到很多库。IDE:Eclipse 和 QTCreator 都是不错的 IDE,但我认为使用文本编辑器 + makefile 也很重要。Vim、Emacs 或 Sublime Text 是不错的选择。一定要记得备份你的代码。

相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   601  
  华为IPD与传统研发模式的8大差异在快速变化的商业环境中,产品研发模式的选择直接决定了企业的市场响应速度和竞争力。华为作为全球领先的通信技术解决方案供应商,其成功在很大程度上得益于对产品研发模式的持续创新。华为引入并深度定制的集成产品开发(IPD)体系,相较于传统的研发模式,展现出了显著的差异和优势。本文将详细探讨华为...
IPD流程是谁发明的   7  
  如何通过IPD流程缩短产品上市时间?在快速变化的市场环境中,产品上市时间成为企业竞争力的关键因素之一。集成产品开发(IPD, Integrated Product Development)作为一种先进的产品研发管理方法,通过其结构化的流程设计和跨部门协作机制,显著缩短了产品上市时间,提高了市场响应速度。本文将深入探讨如...
华为IPD流程   9  
  在项目管理领域,IPD(Integrated Product Development,集成产品开发)流程图是连接创意、设计与市场成功的桥梁。它不仅是一个视觉工具,更是一种战略思维方式的体现,帮助团队高效协同,确保产品按时、按质、按量推向市场。尽管IPD流程图可能初看之下显得错综复杂,但只需掌握几个关键点,你便能轻松驾驭...
IPD开发流程管理   8  
  在项目管理领域,集成产品开发(IPD)流程被视为提升产品上市速度、增强团队协作与创新能力的重要工具。然而,尽管IPD流程拥有诸多优势,其实施过程中仍可能遭遇多种挑战,导致项目失败。本文旨在深入探讨八个常见的IPD流程失败原因,并提出相应的解决方法,以帮助项目管理者规避风险,确保项目成功。缺乏明确的项目目标与战略对齐IP...
IPD流程图   8  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用