2015-05-26 29 views
1

找不到实际的发行说明,指出QNX 6.5.1和6.6.0之间的确切区别。我知道Photon不再被支持。QNX 6.5.0(SP1)和6.6.0(向后兼容)有什么区别?

到目前为止,我已经得到SDP 6.6.0,但它可能是我需要我的软件也运行在6.5.0。那么实际的向后兼容级别是6.5.0呢?有人说“6.6与6.5是二进制兼容的”[1] - 任何人都可以用官方文档来支持这个吗?

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

+0

附注:我测试了以下内容,我使用SDP6.6.0编译了一个相对简单的程序,并在Neutrino 6.5.0上执行它。它确实运行了一些编译器选项修改(另请参阅[这里](http://stackoverflow.com/questions/30535117/qnx-runtime-error-unknown-symbol-stack-chk-guard))。 –

回答

3

迄今为止我发现的差异。

  • 使用SDP 6.6.0(1486-PC-n要-qnx6.6.0-G ++)和运行的软件上QNX 6.5.0:
    • GCC堆保护已被禁用:qcc .. -fno-stack-protector(也见here
    • 使用dlopen() [1]反对共享库链接SDP 6.6.0将使用libcpp.so.5而QNX 6.5.0仅提供libcpp.so.4时。

另外:我发现一个论坛thread,其中瑞安曼斯菲尔德(QNX编译铅维护者,我认为)说:

一个问题[一]会打试图让6.6.0二进制在6.5.0, 上运行的一切都是建立在-fstack-protector之上,依赖于 支持libc。这不在6.5.0 libc中,但添加了IIRC,6.5.0SP1。

1

你问的是'向前'兼容性。 6.6.0向后兼容QNX的早期版本,这意味着在6.5或6.4上编写的软件将在6.6上运行。

如果您需要sw在较旧的系统上运行,最好在该版本级别的操作系统上构建它,并且仍然能够在较新版本的OS上部署sw。

+0

嗨,[dguy321](http://stackoverflow.com/users/5038415/dguy321)。感谢您抽出宝贵的时间。 ;)实际上,我对这两种方式的向后兼容性都感兴趣。但是,我很确定我要求向后兼容(即为旧系统上运行的较新系统生成的sw)。话虽如此,我认为您的说法是正确的,即向前兼容性确实意味着较旧的系统部分可以理解为新系统生成的数据。 –