【问题标题】:Unable to compile c program on linux written on windows [duplicate]无法在windows上编写的linux上编译c程序[重复]
【发布时间】:2017-09-14 12:19:40
【问题描述】:

我在 Windows 机器上使用 Microsoft Visual Studio 在 c 中开发了项目。该项目已成功编译并在 Windows 上运行,但是当尝试在 linux 服务器上编译源代码(.cpp,.h)时,它会抛出类似

的错误

错误:

In file included from
warning: `#pragma once' is obsolete
SDKDDKVer.h: No such file or directory

用于编译*.cpp文件的命令是

gcc-2.95 -c -g -O2 -ffloat-store -Wall -Wpointer-arith\ -Wbad-function-cast -Wwrite-strings -Wstrict-prototypes\ -Wmissing-declarations -Werror -ftemplate-depth-25 -Iinclude file1.cpp

在线搜索,但找不到任何直接解决问题的方法。 在少数网站上,他们建议使用 Cygwin,但我的任务是一次性活动,所以不确定是否真的需要在我的电脑上设置 Cygwin。我不确定上述错误是什么意思(因为我是 c 新手)。

如果有任何地方/网站列出了从 c 程序从 windows 迁移到 linux 时所需的更改,请告诉我。

【问题讨论】:

  • 您的编译器非常非常老了!它于 1999 年发布。
  • 另外,如果没有一些移植或使用兼容性框架(如 MinGW 或 WINE),您通常无法在 Windows 和 Linux 中编译 C 代码。
  • 你把你的 C 文件命名为.cpp?
  • GCC 编译器版本 2.95?你确定你用的是近 20 岁的东西吗?
  • 第一次更新到较新版本的 gcc,应该可以摆脱 #pragma once 错误。 SDKDDKver.h 是一个特定于窗口的头文件,没有 Linux 等效文件,您需要将其删除。我怀疑你会在这些方面遇到更多错误。

标签: c++ linux gcc


【解决方案1】:

没有将代码库从一个环境转换到另一个环境的秘诀。

编写好的代码很难。不幸的是,编写好的和可移植的代码更加困难。

基本上,您需要随时了解在什么平台上可用、仅在一个平台上可用以及在其他平台上的等价物是什么。

使用标准库和已知可在多个平台上使用的库(例如 Boost)很有用。

很难给出更具体的建议,因为这是一个相当广泛的话题。我可以说的是,您显示的错误是关于特定于 Windows 的标头 `SDKDDKVer.h,您必须以某种方式替换它。这意味着从该标头中找到您使用的任何内容的等价物。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-20
    • 1970-01-01
    • 2011-03-04
    • 2011-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多