1

我最近的任务是执行一项可行性研究,该研究基于从使用 DOS 切换到 Linux 以用作操作系统来运行我们的工业控制软件(内部开发)。简而言之,我被限制使用 Ubuntu 8.04(供应商提供的内核升级为板上的硬件提供驱动程序)。由于不再支持此功能,我无法更新或安装软件,这意味着我无法使用 gcc 4.2 版。我希望能够使用 C++ 并且最好使用 boost 库,但目前这似乎我无法这样做。

基本上我在问公司/专业人士如何使用 Linux 作为开发环境?我上面描述的情况是常见的吗?您是否只是简单地选择一个版本和一个编译器并在整个产品生命周期中坚持使用它,以确保开发环境不会发生太大变化,还是您可以随心所欲地升级内核、编译器等?受限于特定供应商可以提供的内容是否很常见。有人愿意就 ubuntu 8.04 是否适合开发工业控制软件的操作系统选择发表意见吗?

我根本不是 linux 专家,但到目前为止,我的研究和实验使我得出结论,我应该放弃 linux 方法并使用 DOS。我们公司没有 linux 知识,而且很小,出于个人职业原因,我对学习 DOS 之类的冗余技术没有兴趣。

我意识到这不完全是一个是/否类型的问题,但我们将不胜感激地收到任何答复。

4

3 回答 3

3

GCC 4.2 没有对 C++11 的支持,但对 C++03 的支持应该很好,您应该能够找到一个可以轻松处理该问题的 Boost 版本。

归根结底,Linux 有许多你在 DOS 中找不到的优点——例如,没有分段、虚拟内存,以及使开发软件变得更容易和更快的东西,更不用说你可能需要的额外库,因为绝对没有人今天将支持DOS。

于 2012-06-22T13:36:31.080 回答
1

对于基于 linux 的系统,没有太多理由坚持使用固定的 OS+工具链版本,因为向后兼容性在 Unix 世界中是一个非常严重的问题。有时以某些固定系统为目标是好的,但坦率地说,这些是相当罕见的,即使这样,只要在目标机器/平台上进行测试,就可以在最新系统上进行开发。

基本上你可以升级到例如 Ubuntu 12.04 LTS(长期支持)进行开发并坚持下去,目标平台/机器上不太可能出现任何类型的不兼容问题。

于 2012-06-22T13:43:52.987 回答
0

库等往往会在 Linux 发行版、新版本的 linux 发行版和其他 *nix 操作系统之间发生变化。

我曾经开发过一个必须在 Windows 和 RHEL 上运行的 C++ 应用程序。我是团队中的“Linux 人”,所以我必须处理哄骗我们用来在 Windows 上构建和工作的所有开源 linux 库(使用 cygwin),并获得开发人员所做的最新更改Windows 在 Linux 上工作。

在开发过程中,我们升级到了更新版本的 RHEL。这不是一次有趣的经历。库版本发生了变化,一些已被删除以支持其他“等效”库等。消除由更改 gcc 版本引起的所有问题也需要一段时间(当然,较新的 gcc 版本不那么宽容和暴露我们代码中的一些东西可能无论如何都不太正确)。

在大型演示前几天,管理层通知我们该应用程序也需要在 Solaris 上运行。这不是一项简单的任务——Solaris 不是 Linux。他们暗示希望它在某一时刻在 IRIX 上运行。很高兴那没有发生。

我建议您选择特定版本的 Linux 发行版、gcc 等,并在整个开发过程中坚持使用它。当软件处于维护状态时,可以稍后升级这些东西。RHEL 提供长期支持,但需要付费。您还可以考虑新发布的 Ubuntu 12.04 LTS

于 2012-06-22T13:50:36.457 回答