[英]Issues in porting c/c++ code to VxWorks
我需要將已支持Linux / Mac的ac / c ++代碼庫移植到VxWorks。 我是VxWorks的新手。 你能告訴我可能出現的問題嗎?
我們最近進行了相反的轉換 - 我們將代碼從運行VxWorks的PowerPC機器移植到運行Linux的Intel系統。 我不記得在操作系統之間的差異方面遇到很多障礙。 顯然,對OS特定API的任何調用都必須改變,我們沒有廣泛使用這些函數。
我們最大的問題不是操作系統之間的差異,而是PowerPC和英特爾硬件之間的差異。 PowerPC是Big Endian,Intel是Little Endian。 我們的軟件是用C語言編寫的,並且對字節順序做了許多假設,這是讓它再次順利運行的絕對噩夢。 實際上有數百種結構定義了位域,需要重新排序才能正常工作。 我們最終在GCC中實現了#pragma,它們在定義時反轉了這些位域(#pragma reverse_bitfields)。
在很大程度上取決於您要定位的VxWorks版本以及實際的目標處理器本身。 你需要處理的一件事是沒有分頁內存系統或虛擬內存 - 你有什么東西。 環境本身比Linux系統更受限制。 有時,移植應用程序所涉及的工作會一直回到架構級別,因為資源不像linux中那樣無限制。
其他一些提示:
根據您使用VxWorks字節序運行的處理器,結構打包和內存對齊都可能是問題。 我最后一次使用VxWorks時,它支持pthreads,socket和mutex層,足以輕松模仿unix環境。
在不了解您正在移植的應用程序的情況下很難說:它使用了什么linux庫和api調用? 它是自包含的,還是依賴於大量的linux命令行工具和腳本來完成它的工作?
正如平均所說,字節序可能會導致比預期更多的問題 - 特別是如果你沒有做好准備。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.