QNX 6.5.0(SP1) 和 6.6.0(向后兼容)有什么区别?

Jim*_*ams 2 qnx backwards-compatibility qnx-neutrino

找不到指出 QNX 6.5.1 和 6.6.0 之间确切区别的实际发行说明。我知道 Photon 不再受支持。

到目前为止,我已经有了 SDP 6.6.0,但我可能还需要我的软件在 6.5.0 上运行。那么 6.5.0 的实际向后兼容性级别是多少?有人说“6.6 与 6.5 二进制兼容”[ 1 ] - 有人可以通过官方文档支持这一点吗?

由于 QNX 遵循 POSIX 标准,我认为 API 是相同的,并且确实应该提供向后兼容性。那么为 6.6.0 创建的程序基本上也应该在 6.5.0 上运行,对吧?

Jim*_*ams 5

到目前为止我发现的差异。

  • 使用 SDP 6.6.0 (i486-pc-nto-qnx6.6.0-g++) 并在 QNX 6.5.0 上运行软件:
    • 必须禁用 gcc 堆栈保护器:(qcc .. -fno-stack-protector另请参阅此处
    • 当使用dlopen()[ 1 ] 链接共享库时,SDP 6.6.0 将使用libcpp.so.5,而 QNX 6.5.0 仅提供libcpp.so.4

另外:我发现了一个论坛帖子,其中 Ryan Mansfield(我认为是 QNX 编译器首席维护者)说:

尝试让 6.6.0 二进制文件在 6.5.0 上运行时可能会遇到一个问题,即所有内容都是使用 构建的-fstack-protector,它依赖于libc中的支持。这不在 6.5.0 libc中,而是在 IIRC 6.5.0SP1 中添加的。