我需要将已经支持Linux / Mac的c / c ++代码库移植到VxWorks。我是VxWorks的新手。你能告诉我可能出现的问题吗?
答案 0 :(得分:3)
我们最近进行了相反的转换 - 我们将代码从运行VxWorks的PowerPC机器移植到运行Linux的Intel系统。我不记得在操作系统之间的差异方面遇到很多障碍。显然,对OS特定API的任何调用都必须改变,我们没有广泛使用这些函数。
我们最大的问题不是操作系统之间的差异,而是PowerPC和英特尔硬件之间的差异。 PowerPC是Big Endian,Intel是Little Endian。我们的软件是用C语言编写的,并且对字节顺序做了许多假设,这是让它再次顺利运行的绝对噩梦。实际上有数百种结构定义了位域,需要重新排序才能正常工作。我们最终在GCC中实现了#pragma,它们在定义时反转了这些位域(#pragma reverse_bitfields)。
答案 1 :(得分:2)
很大程度上取决于您要定位的VxWorks版本以及实际的目标处理器本身。你需要处理的一件事是没有分页内存系统或虚拟内存 - 你有什么东西。环境本身比Linux系统更受限制。有时,移植应用程序所涉及的工作会一直回到架构级别,因为资源不像linux中那样无限制。
其他一些提示:
答案 2 :(得分:1)
根据您使用VxWorks字节序运行的处理器,结构打包和内存对齐都可能是问题。我最后一次使用VxWorks时,它支持pthreads,socket和mutex层,可以很容易地模仿unix环境。
答案 3 :(得分:0)
在不了解您正在移植的应用程序的情况下很难说:它使用了什么linux库和api调用?它是自包含的,还是依赖于大量的linux命令行工具和脚本来完成它的工作?
正如平均所说,字数会导致你出现比预期更多的问题 - 特别是如果你没有为此做好准备。