为VxWorks 6.4交叉编译Boost 1.40

时间:2009-10-21 16:45:08

标签: boost vxworks powerpc

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

我无法使用vxworks gnu编译器进行编译。我认为这不会成为一个问题,因为我在boost trac上看到了旨在使其成为可能的补丁,并且由于vxworks编译器是gnu工具链的一部分,我应该能够遵循指示the boost docs用于交叉编译。

我正在构建一个用于ppc vxworks的窗口。

我更改了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=linux gcc-ppc在user-config中设置为指向g ++ ppc vxworks交叉编译器。

我做错了什么?我相信我已经跟着文件到了那封信。

2 个答案:

答案 0 :(得分:2)

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

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

这将向您展示编译器预定义的宏。

我从未尝试为VxWorks编译boost,因为我只需要一些标题。

答案 1 :(得分:0)

尝试添加

threadapi=pthread

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