【问题标题】:Building boost without memory-mapped IO在没有内存映射 IO 的情况下构建提升
【发布时间】:2020-12-05 11:59:59
【问题描述】:

我正在尝试为没有mmap/munmap(带有 devkitPro 工具链的 Nintendo Switch)的平台构建 boost 1.71。构建失败,因为没有 <sys/mman.h> 文件。

如何配置 boost 以禁用内存映射 IO?我检查了boost/config/user.hpp,但那里似乎没有相关选项。

【问题讨论】:

    标签: gcc boost mingw-w64 jam


    【解决方案1】:

    仅用于标题:

    确定

    • BOOST_CONTEXT_USE_MAP_STACK定义

    • 避免包含context/posix/protected_fixedsize_stack.hpp。 (头卫BOOST_CONTEXT_PROTECTED_FIXEDSIZE_H

    • 避免包含coroutine/posix/protected_stack_allocator.hpp。 (头卫BOOST_COROUTINES_PROTECTED_STACK_ALLOCATOR_H

    • 如果您使用 Spirit Classic,

      BOOST_SPIRIT_FILEITERATOR_POSIX定义

    • 不要使用 Boost Interprocess 共享内存/映射文件。 interprocess/anonymous_shared_memory.hpp, interprocess/shared_memory_object.hpp, interprocess/mapped_region.hpp)

      似乎有一种方法可以(取消)配置一些 for BOost Interprocess,但我不知道defined(BOOST_INTERPROCESS_POSIX_SHARED_MEMORY_OBJECTS) 的设置是什么,而且看起来它并没有涵盖所有用途

    用于库编译

    该列表将包括上述所有内容以及任何依赖于它们的内容。

    这可能很多,但我没有追踪它们。所以也许你对你所追求的图书馆很幸运

    但可以调整以下直接依赖项:

    【讨论】:

    • 哦该死 - 我在 1.74 上完成了所有跟踪,直到我注意到你提到了 1.71。所以,有些细节可能会被关闭
    • 完全没有问题。缺少mmap 不是我唯一的问题,只是第一个弹出的问题,所以无论如何我预计会有一些事情发生。
    • 一个初学者的问题:在哪里指定诸如LACKS_SYS_MMAN_H之类的东西的正确位置? project-config.jam 中是否有此类内容的语法,或者我是否将它们添加到 boost/config/user.hpp 或编译器标志中?
    • 这正是 dlmalloc random repo doc link 的一个例子。所以没有正确的地方,它已经存在于container/src/dlmalloc_2_8_6.c中。定义全局定义是a good question。我想我记得文档很脆弱,但在那个页面上你可以找到define=
    猜你喜欢
    • 2014-06-06
    • 2011-04-22
    • 1970-01-01
    • 1970-01-01
    • 2020-01-13
    • 2016-11-21
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    相关资源
    最近更新 更多