我在C的嵌入式開發中。在開發分佈式系統時,GCC工具鏈的哪些元素應該是相同的?
我讀過分佈式系統,你應該對不同的節點使用相同的編程語言,或準備協調傳輸數據中的不同數據類型。
是否存在使用不同工具鏈的不同設備的警告標誌?如果是這樣,工具鏈的哪些部分應該是相同的?
我在C的嵌入式開發中。在開發分佈式系統時,GCC工具鏈的哪些元素應該是相同的?
我讀過分佈式系統,你應該對不同的節點使用相同的編程語言,或準備協調傳輸數據中的不同數據類型。
是否存在使用不同工具鏈的不同設備的警告標誌?如果是這樣,工具鏈的哪些部分應該是相同的?
無論如何,你應該爲此做好準備。這不是一個新問題 - 這就是爲什麼我們在網絡上使用bigendian數據的原因,並且有一些工具可以做到,比如DCE,MPI或者CORBA。
即使您在兩側使用相同版本的GCC,它也不會消除像字節序,架構差異等可用的數據大小(long可能是64位,int可能是16位 - 對於固定大小,請使用stdint。 h)等等。使用不同的工具鏈通常無關緊要,因爲上面提到的平臺和ABI差異都有。這就是說,當你爲多個平臺編譯程序時,你可能會碰到符合標準和新功能的東西,而獲得相同的工具鏈是實現它的一個簡單方法。這首先是GNU背後的推動力之一,因爲非自由銷售商有時不僅沒有跟上,而且他們還需要錢。通常以迫使你更換你的機器的形式。
將自己鎖定到一個工具或工具鏈沒有太大意義,因爲在分佈式系統中應該能夠與其他人通信,無論如何您都必須考慮通信協議和數據表示。例如,即使您使用相同的工具鏈,目標體系結構也可能具有不同的內部數據表示,例如,endianess和軟件必須處理該問題。
我會推薦設計不依賴於目標系統架構或特定工具鏈的通信協議。這樣,當需求發生變化時(即可能需要添加另一個目標體系結構,該體系結構的二進制數據表示與「通常」的一個不兼容或者可能需要一些特殊工具),您將省去重新設計系統的麻煩。