我需要将已支持Linux/Mac的c/C++代码库移植到VxWorks。我对VxWorks相当陌生。你能否告诉我可能出现的问题是什么?将c/C++代码移植到VxWorks中的问题
3
A
回答
3
我们最近做了相反的转换 - 我们将代码从运行VxWorks的PowerPC机器移植到运行Linux的Intel系统。就操作系统之间的差异而言,我不记得遇到过很多障碍。很明显,任何调用特定于操作系统的API都必须改变,我们并没有广泛使用这些函数。
我们最大的问题不是操作系统之间的差异,而是PowerPC和Intel硬件之间的差异。 PowerPC是Big Endian,Intel是Little Endian。我们的软件是用C语言编写的,并且对字节顺序做了很多假设,这是让它再次顺利运行的绝对噩梦。实际上有数百个结构定义了位域,需要重新排序以正确工作。我们最终在GCC中实现了一个#pragma,在他们的定义中反转了这些位域(#pragma reverse_bitfields)。
0
如果不了解更多关于正在移植的应用程序的信息,很难说:它使用的是什么linux库和api调用?它是独立的,还是依赖于Linux命令行工具和脚本来完成它的工作?
正如平均所言,排序会给您带来比预期更多的问题 - 尤其是如果您没有做好准备。
1
取决于您使用VxWorks排序的处理器,结构打包和内存对齐都可能是问题。上次我使用VxWorks时,它支持一个pthreads,套接字和互斥层,它们足够轻松地模仿unix环境。
2
很大程度上取决于您所针对的VxWorks版本以及实际的目标处理器本身。有一件事你不得不面对的是没有分页的内存系统或虚拟内存 - 你有什么。环境本身比linux系统更受限制。有时候,移植应用程序所涉及的工作一直回到架构级别,因为资源并不像Linux中那样无限。
一些其他提示:
- 许可证的VxWorks,这样你有可用的源代码
- 在开发周期中尽早使用真实的物理目标;不要指望模拟器准确模拟目标
- 必要时使用TSR(技术支持请求);我不知道他们是如何构建购买创造TSR的权利的,但不要让任何人在这些方面便宜。
相关问题
- 1. 将问题移植到VxWorks
- 2. 将g ++代码移植到Clang ++问题
- 3. 从VxWorks移植到Quadros/RTXC
- 4. 将VxWorks intConnect API移植到linux
- 5. 将PHP代码移植到Delphi代码
- 6. 将PHP代码移植到Delphi代码
- 7. 将iOS3代码移植到iOS5:单身人士的问题
- 8. 将md5移植到Laravel中的问题
- 9. 将C++代码移植到C# - 指针问题
- 10. 将cshell代码移植到Bourne shell中
- 11. 将POSIX C代码移植到windows中
- 12. C++/CLI代码移植问题
- 13. 将旧的cuda代码移植到7.5
- 14. 将java6 swing代码移植到java5
- 15. 将Flash代码移植到iOS和Android
- 16. 将OpenGL 1.x代码移植到WebGL
- 17. 将Common Lisp代码移植到Clojure
- 18. 将Java SE代码移植到黑莓
- 19. 将MATLAB代码从Windows移植到Mac
- 20. 将OpenGL代码从C++移植到Python
- 21. 将代码从Matlab移植到C++
- 22. 将源代码从git移植到TFVC
- 23. 将Android代码移植到BlackBerry naitivly
- 24. 将AWT图形代码移植到Android
- 25. 将php代码从mysql_移植到mysqli_
- 26. 如何将此代码移植到Java?
- 27. Sigaction并将Linux代码移植到Windows
- 28. 将c代码移植到actionscript 2
- 29. 将java代码移植到contiki-os
- 30. 将此PHP RS232代码移植到Node.js
感谢您的回复。该应用程序使用pthread,套接字库,临界区和互斥处理API。如果在移植到VxWorks时遇到任何问题,您可以告诉我吗? – ebaccount 2009-06-09 20:47:43