【问题标题】:"sys/mman.h: No such file or directory"“sys/mman.h:没有这样的文件或目录”
【发布时间】:2014-06-24 13:45:43
【问题描述】:

我正在使用 Code::Blocks 8.02 并且我有一个问题.. 每次我尝试编译 minimad.c(Libmad 附带的示例)时都会收到一条错误消息:

sys/mman.h: No such file or directory 当然还有一堆错误要遵循:(

我已经知道它是内存管理库... 问题是: 我在哪里可以下载<sys/mman.h>?或者如果有另一个编译器支持更多的库,那么 Code::Blocks 8.02?

附:我已经将 mad.h 链接到编译器并进行了很好的测试,所以我知道那里没有问题...

【问题讨论】:

    标签: c++ visual-c++


    【解决方案1】:

    Code::Blocks 不是编译器,而是 IDE。而<sys/mman.h> 是 Unix 标头,在 Windows 上不可用。

    【讨论】:

    • @Pavel Minaev:事实上,如果你在windows下指定,它仍然会拉入定义和声明,也就是说,只要代码已经移植到win32平台。 . 通过执行 #include 或任何其他头文件,并不一定意味着它是基于 unix 的,因为使用了正斜杠。希望有帮助! :)
    • @tommieb,这与正斜杠无关,而与 sys 下的所有标头都是传统的 Unix API 的事实有关。 Windows 实现通常提供其中的一些——那些易于实现的,例如sys/stat.hsys/utime.h——但不是全部。可能提供 mman.h 的唯一实现是 Cygwin 和 Interix (SFU/SUA)。
    【解决方案2】:

    这对于原始海报来说可能为时已晚,但如果有人需要 Windows 的 mman.h,我发现:http://code.google.com/p/mman-win32/

    你应该能够在 VS 中打开它(我只在 VS2010 中做过)并构建它,然后你应该得到你想要的。

    【讨论】:

      【解决方案3】:

      你是如何编译代码的?您可能需要指定 -I 来指定额外的包含目录,您可能需要在安装 /usr/local/include/sys 上挖掘这些目录。此外,您还想使用 -L 标志来指定链接的库。再次四处挖掘以找到正确的位置。

      希望这会有所帮助, 此致, 汤姆。

      【讨论】:

        猜你喜欢
        • 2017-06-15
        • 2013-08-03
        • 1970-01-01
        • 2019-03-07
        • 2015-01-05
        • 2016-06-19
        • 2021-06-24
        • 2015-02-20
        相关资源
        最近更新 更多