【问题标题】:Cross compile Boost 1.40 for VxWorks 6.4为 VxWorks 6.4 交叉编译 Boost 1.40
【发布时间】:2009-10-21 16:45:07
【问题描述】:

我正在尝试将使用 Boost(尤其是 boost::thread 和 boost::asio)的项目迁移到 VxWorks。

我无法使用 vxworks gnu 编译器进行编译。我认为这不会成为问题,因为我在 boost trac 上看到了声称使这成为可能的补丁,并且由于 vxworks 编译器是 gnu 工具链的一部分,我应该能够按照说明进行操作the boost docs 用于交叉编译。

我正在为 ppc vxworks 在 Windows 上构建。

我更改了 boost 文档中指定的 user-config.jam 文件,并将 target-os=linux 选项用于 bjam,但 bjam 在编译之前似乎挂起。仔细检查 bjam 发出的命令(通过使用 -n 选项调用它)发现它正在尝试使用 boost::thread 的 win32 文件进行编译。这不可能是正确的,因为 vxworks 使用 pthreads。

我的 bjam 命令:.\bjam --with-thread toolset=gcc-ppc target-os=linuxgcc-ppc 在用户配置中设置为指向 g++ppc vxworks 交叉编译器。

我做错了什么?我相信我已经完全按照文档进行了操作。

【问题讨论】:

    标签: boost vxworks powerpc


    【解决方案1】:

    如果它是#include win32 标头而不是 pthread 标头,则您的编译器定义的宏集与 boost 标头正在检查的宏之间可能存在差异。我在智能指针头中遇到了类似的问题,在旧版本的 boost 中会检查 __ppc,但我的编译器定义了 __ppc__(反之亦然,不记得了)。

    touch empty.cpp
    ccppc -dD -E empty.cpp
    

    这将显示您的编译器预定义了哪些宏。

    我从未尝试为 VxWorks 编译 boost,因为我只需要几个头文件。

    【讨论】:

      【解决方案2】:

      尝试同时添加

      threadapi=pthread
      

      您提到的文档是针对 Boost.Build 的——它是独立的构建工具——而上面的标志是 Boost.Thread 库特有的。 “挂”是什么意思?由于 Boost 库非常庞大,因此有时在构建之前扫描依赖项需要花费大量时间。 如果它真的挂起,你能在调试器中捕获 bjam 并产生回溯吗?此外,任何输出的日志都会有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-17
        • 1970-01-01
        • 2016-01-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多