开发分布式系统时,GCC工具链的哪些元素应该相同?

开发分布式系统时,GCC工具链的哪些元素应该相同?,c,gcc,embedded,distributed,toolchain,C,Gcc,Embedded,Distributed,Toolchain,我从事C语言的嵌入式开发 我已经读到,在分布式系统中,您应该为不同的节点使用相同的编程语言,或者准备好协调传输数据中的不同数据类型 是否有针对不同设备使用不同工具链的警告标志?如果是这样,工具链的哪些部分应该是相同的?无论如何,您可能都应该为此做好准备。这不是一个新问题——这就是为什么我们在“网络”上使用bigendian数据的原因——而且有一些工具已经准备好了,比如DCE、MPI或CORBA 即使双方都使用同一版本的GCC,也无法消除架构上的差异,如endianness、可用数据大小(long

我从事C语言的嵌入式开发

我已经读到,在分布式系统中,您应该为不同的节点使用相同的编程语言,或者准备好协调传输数据中的不同数据类型


是否有针对不同设备使用不同工具链的警告标志?如果是这样,工具链的哪些部分应该是相同的?

无论如何,您可能都应该为此做好准备。这不是一个新问题——这就是为什么我们在“网络”上使用bigendian数据的原因——而且有一些工具已经准备好了,比如DCE、MPI或CORBA

即使双方都使用同一版本的GCC,也无法消除架构上的差异,如endianness、可用数据大小(long可能是64位,int可能是16位-对于固定大小,使用stdint.h)等等。使用不同的工具链通常无关紧要,因为上面提到的平台和ABI的差异都存在


这就是说,在为多个平台编译程序时,您可能会遇到标准遵从性和您想要匹配的新功能等问题,而获得相同的工具链是实现这一目标的简单方法。这首先是GNU背后的驱动力之一,因为非自由供应商有时不仅跟不上,当他们跟上时,他们还想要钱。通常也会迫使你更换机器

将自己锁定在一个工具或工具链上没有多大意义,因为在应该能够与他人通信的分布式系统中,您无论如何都必须考虑通信协议和数据表示。例如,即使您使用相同的工具链,目标体系结构也可能具有不同的内部数据表示形式,例如endianess,软件必须处理这一点

我建议设计不依赖于目标系统体系结构或特定工具链的通信协议。这样,当需求发生变化时,您将省去重新设计系统的麻烦(即,可能必须添加另一个目标体系结构,其二进制数据表示形式与“常用”体系结构不兼容,或者可能需要一些特殊工具)