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

时间:2011-12-10 08:45:34

标签: c gcc embedded distributed toolchain

我在C中进行嵌入式开发。

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

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

2 个答案:

答案 0 :(得分:1)

无论如何,你应该为此做好准备。这不是一个新问题 - 这就是为什么我们在'网络上使用bigendian数据 - 并且有一些工具准备去做,比如DCE,MPI或CORBA。

即使你在双方使用相同版本的GCC,它也不会消除诸如字节序,可用数据大小之类的架构差异(长可能是64位,int可能是16位 - 对于固定大小,使用stdint.h )等等。使用不同的工具链通常无关紧要,因为上述平台和ABI的差异都存在。

也就是说,在为多个平台编译程序时,您可能会遇到标准合规性和要匹配的新功能等问题,并且获得相同的工具链是实现它的简单方法。这是GNU背后的推动力之一,因为非免费供应商有时不仅跟不上,当他们这样做时,他们也想要钱。通常还会强迫您更换机器。

答案 1 :(得分:1)

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

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