分享
为什么问答平台  ›  专栏  ›  技术社区  ›  ckv

Linux平台下的C++编程 - C++ Programming in Linux Platform

  •  4
  • ckv  · 技术社区  · 2 月前

    我是一个软件工程师,在Windows操作系统中工作在VC++、C++中。

    在Linux环境下,C++中是否存在编码上的主要差异。

    或者只是当我们需要在Linux C++中编码时,我们需要做一些调整。

    9 回复  |  直到 9 年前
        1
  •  9
  •   oscode    9 年前

    它将取决于您所处理的项目类型以及您使用的本机Windows API。例如,如果您将本机Windows API用于所有方面,那么您将面临一项非常艰巨的任务,而让您的项目与葡萄酒完美结合是值得的。

    在Linux环境中,您有手册页,几乎所有内容的详细文档:)。如前所述,查看posix,尽管我推荐qt-它为您可能希望学习Linux方式(如sockets、filesystem…)的内容提供了大量抽象。

        2
  •  5
  •   Ignacio Vazquez-Abrams    9 年前
    1. 使用posix API而不是win32 API。
    2. 使用gtkmm、qt或wxwidgets而不是mfc。
        3
  •  5
  •   Artyom    9 年前

    Linux编程世界与您在Windows世界中熟悉的非常不同。你必须理解并习惯它。一旦你明白了,你就不想再回来了。

    1. 您有许多小的/好的工具可以相互配合,而不是一个完整的MSVC解决方案。例如:

      在Linux中,编译器作为独立工具(GNU编译器集合),构建系统作为独立工具(autotools,cmake)。您将GNU调试器作为独立工具,并将非常好的编辑器作为独立工具(如硬核VIM/EMAC)。

      有集成的开发环境,如Eclipse、NetBeans、Kdevelop、Anjuta 但是你还是要理解这些东西是如何工作的。

      您应该理解,每个单独的工具都非常强大,并与其他工具集成。

    2. 操作系统级API的设计非常简单。你很少会发现像createprocessex这样的带有bizzlion参数的调用,而不是简单的 fork() + exec() . 在所有连接到系统API和标准C库的系统中,man是您真正的朋友。

    3. 图形用户界面-有两个大型图形用户界面库qt/gtk。Qt是一个伟大的C++库,它使GUI开发变得有趣(不像MFC)。GTK既有C和C++ APIGTK,也有GTKmm(没有经验)。

    4. i18n/l10n/unicode-这是Linux编程让生活更容易的地方。几乎所有东西都是UTF-8。没有广泛的API垃圾,用简单的fopen或ifstream打开中文文件名没有问题,没有不能用unicode名称打开文件的第三部分库。很好的内置工具,如gettex和良好的翻译工具包,如kbabel。

    5. 图书馆-这是Linux编程让你讨厌Windows的地方。几乎每一个自由库都已安装或可用 apt-get yum install . 没有调试/发布不兼容的废话,没有DLL导出,简单健壮,使共享对象与使用静态库一样简单(大多数情况下根本不使用静态库)。

    我的0.02美元

    (我是一个Linux程序员,对Windows开发有很大的了解。)

        4
  •  2
  •   Mattias Nilsson    9 年前

    这取决于您使用过多少特定于Windows的东西。C++的标准部分是相同的,但是使用它不会比命令行应用程序更深入。

    还有整个makefile,而不是让vs为你构建东西。取决于您决定在Linux中使用什么工具(或IDE),这可能是一个很大的区别。

        5
  •  1
  •   Nemanja Trifunovic    9 年前

    我在这两个平台上都做了不少工作,并且都喜欢它们,但总的来说,我发现大多数开发人员喜欢一个平台,讨厌另一个平台。

    我会将*nix环境描述为“对极客友好”:许多优秀且非常灵活的工具供您使用。他们中的一些人引入了艰难的学习曲线,有些人只是简单地被打破了,但由于某种原因仍然很受欢迎(制造),但是如果你愿意花一些时间来正确地学习他们,回报是很高的。事实上,我使用许多*nix工具,即使在Windows上工作:vim、grep、perl等。

    另一方面,Windows平台提供的win32 api比posix具有更多的功能,并且有很好的文档记录和支持。Windows上的调试程序(尤其是windbg)通常比我尝试过的任何*nix调试程序都更强大,尽管gdb通常对大多数任务都足够好。可执行文件的部署也比Linux世界更容易——事实上,在Linux上部署软件的唯一真正可靠的方法是通过config/make发布源代码并在客户机上构建它。

        6
  •  0
  •   d33r    9 年前

    我建议使用类似scons的构建系统,它在Linux和Win32上都很好地工作。

        7
  •  0
  •   Andrew McGregor    9 年前

    看看在Linux和Windows上运行的某个开源项目的源代码。通常,超过80%的代码是相同的,项目越大,系统特定的部分就越少。不幸的是,在系统特定的代码中可能存在硬部件(线程、非阻塞网络IO、GUI详细信息)。

        8
  •  0
  •   Makis    9 年前

    我可以想到一些主要的区别:

    • 工具。优缺点。如果您习惯了使用Visual Studio,那么就没有什么比这更好的了。每个Linux IDE都有一些问题。另一方面,特别是调试工具非常好。但总而言之,你应该用现有的资源来创造你自己的工作环境。
    • API的文档千差万别。有些组件有很好的文档记录,但通常情况下,您最终会阅读源代码,以了解应该如何工作。另一方面,你 源代码,所以最终你有了所有可能的工具来找出为什么有些东西不能工作。
    • Linux编程社区通常是非常好的,只要你记住行为,并且找到正确的地方。所以在某些问题上,这并不是半途而废,但有时你需要找到其他地方。
    • 事情并不像你在Windows世界里学到的那样自动化。是的,有些工具允许您在不了解makefile的情况下创建项目,但实际上,您应该学习如何使用它们。在Windows中,更常见的情况是从不手动编辑项目文件(例如makefiles)。
    • 如果你想在内核空间中工作(驱动程序等),C是比C++更好的选择,因为内核是用它编写的。
    • 我同意人们的建议。很好的小部件。至少拍下来(是的,我知道,是爪哇)。Qt创造者也不错。
    • 不要低估shell脚本的威力!很少有Windows程序员知道,但是你可以用他们做很多事情来帮助你的工作。
        9
  •  0
  •   Warren P    9 年前

    一个使用Visual C++的典型Windows程序员可能会发现Linux C++编程的以下方面是新颖的,或者是困难的:

    1. Linux编程不是Linux编程,而是Unix编程。Unix编程的根可以追溯到比Windows的MS-DOS根更远的地方,并且它在很多地方都有显示。

    2. Windows程序员倾向于考虑环境,他们倾向于首先考虑IDE工具(GUI编辑器、编译器、调试器)。UNIX程序员倾向于排列在不同的部族中,许多核心UNIX(Linux)C++程序员在没有IDE的情况下从命令行工作非常舒适,当然,有些人在Linux上使用VisualStudio风格的IDE,其中有很多。

    3. 我个人发现我必须学习如何读取(或者写)一个makefile,从源代码中构建一组标准的Linux/Unix应用程序(并了解如何通过“自动配置”和人们可能选择的各种命令行选项等步骤键入我的方法),然后才能感受到环境的味道。

    4. 在你成为一个经验丰富的Linux系统管理员之前,你可能会想继续使用新的、友好的Linux发行版(比如Ubuntu)。