我可以使用以下命令在面向 QNX OS (x86) 的 Windows 上成功交叉编译 boost:b2 toolset=qcc target-os=qnx threadapi=pthread
但是,出于某种原因,生成的库文件似乎没有正确链接到内部依赖项。
例如,在单元测试框架上执行 objdump 会导致:
Dynamic Section:
NEEDED bin.v2\libs\timer\build\qcc\release\target-os-qnx\threadapi-pthread\threading-multi\libboost_timer-qcc-mt-1_60.so.1.60.0
NEEDED bin.v2\libs\system\build\qcc\release\target-os-qnx\threadapi-pthread\threading-multi\libboost_system-qcc-mt-1_60.so.1.60.0
NEEDED libm.so.2
NEEDED libc.so.3
正如您所看到的,有一条荒谬的路径可以链接到计时器和系统库(还有 QNX,如 linux,将 '\' 解释为转义字符,因此我不能在 QNX 机器中使用文件夹结构) . 我手动编辑了库的二进制文件并删除了路径(我知道这是非常危险的......):
Dynamic Section:
NEEDED libboost_timer-qcc-mt-1_60.so.1.60.0
NEEDED libboost_system-qcc-mt-1_60.so.1.60.0
NEEDED libm.so.2
NEEDED libc.so.3
哪个有效。是否可以强制 Boost 不将整个路径包含到库中?这是提升问题还是 QNX 6.6 qcc 工具链问题?我真的不想手动编辑每个库的二进制文件......