【问题标题】:sstream: No such file or directorysstream:没有这样的文件或目录
【发布时间】:2016-04-09 02:43:38
【问题描述】:

到目前为止我做了什么:

平台:Windows 7(64 位)

this method之后安装了GCC

link下载的犰狳 (armadillo-6.400.3.tar.gz)

提取犰狳并将源代码放在包含文件夹中。

创建main.cpp

#include <armadillo>

int main()
{
    return 0;
}

在windows中编译cmd终端:

g++ main.cpp -std=c++11

编译错误结果:

D:\c++\test>g++ main.cpp -std=c++11
g++: unrecognized option `-std=c++11'
In file included from main.cpp:2:
C:\cygnus\cygwin-b20\H-i586-cygwin32\bin\..\lib\gcc-lib\i586-cygwin32\egcs-2.91.
57\..\..\..\..\..\include\g++\armadillo:24: sstream: No such file or directory
In file included from main.cpp:2:
C:\cygnus\cygwin-b20\H-i586-cygwin32\bin\..\lib\gcc-lib\i586-cygwin32\egcs-2.91.
57\..\..\..\..\..\include\g++\armadillo:27: limits: No such file or directory
In file included from C:\cygnus\cygwin-b20\H-i586-cygwin32\bin\..\lib\gcc-lib\i5
86-cygwin32\egcs-2.91.57\..\..\..\..\..\include\g++\armadillo:50,
                 from main.cpp:2:
C:\cygnus\cygwin-b20\H-i586-cygwin32\bin\..\lib\gcc-lib\i586-cygwin32\egcs-2.91.
57\..\..\..\..\..\include\g++\armadillo_bits/compiler_setup.hpp:173: #error "***
 Need a newer compiler ***"

更新

D:\c++\test>g++ --version
egcs-2.91.57

【问题讨论】:

  • 尝试将文件名更改为 abc.cpp 并确保该目录包含 abc.cpp 文件。
  • @Vimal,不幸的是发生了同样的错误
  • 您检查过您的g++ 的年龄吗? exe 安装程序包含 1998 年的文件。创建它时看不到 C++11 ...转到cygwin.org 并下载当前版本。
  • egcs 2.91.57 来自 1998 年。cygwin b20 来自 1999 年。安装现代 cygwin。 (当页面显示“此页面最后一次更新于 2005 年 9 月 13 日”时,它不太可能对 C++11 开发有所帮助。)
  • @molbdnilo,我可能会推荐 MinGW 或 MSys2 而不是 Cygwin,因为它们构建的二进制文件不需要 (GPL) Cygwin 库。

标签: c++ windows c++11 gcc armadillo


【解决方案1】:
D:\c++\test>g++ --version
egcs-2.91.57

那是古代。 gcc 版本 4.7 支持-std=c++11(在 4.x 系列早期的某个地方引入了 -std=c++0x 选项,但仅支持已经存在的 C++11 位,因为那些在 C++11 完成之前发布)。

升级到最新的MinGWMinGW-w64(带有一些改进和Win64 支持的分支)。

您也可以通过MSys2Cygwin 安装。在后一种情况下,请注意gccmingw-gcc 包之间的区别;前者构建需要cygwin1.dll 的二进制文件,后者使用标准Microsoft 运行时构建二进制文件。 MinGW 和 MSys2 应始终仅使用 Microsoft 运行时。

【讨论】:

  • 谢谢,我应该安装哪些cygwin包?
  • @MrVahid,我不记得确切,但我相信它被称为mingw-g++(或mingw-gcc-g++?)并且依赖项应该拉动其余部分。或者,如果您不需要围绕它的所有模拟 unix 环境,则使用独立 MinGW 的默认安装。
  • @MrVahid:我发现 Cygwin 又大又笨重。除非你真的想要一个 Posix 层,否则一个简单的本机编译器就够了吗?在那种情况下,我会选择 MingW,例如来自STL's website
【解决方案2】:

根据文件日期和时间以及版本命令的输出判断您使用的是过时的编译器。

您应该检查是否需要坚持使用 gcc,Windows 平台上还有其他可用的编译器。

如果您想坚持使用 gcc,尤其是 cygwin(其中包含更多类似 unix 的实用程序),您应该 download the installer 并选择所需的组件。 G++ 就是其中之一:

【讨论】:

    猜你喜欢
    • 2015-05-16
    • 2021-06-24
    • 2015-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-17
    • 2016-05-06
    相关资源
    最近更新 更多