私はCで組み込み開発を行っています。
分散システムでは、異なるノードに同じプログラミング言語を使用するか、送信データの異なるデータ型を調整する準備をする必要があることを読みました。
さまざまなデバイスにさまざまなツールチェーンを使用するためのそのような警告サインはありますか?もしそうなら、ツールチェーンのどの部分が同じである必要がありますか?
私はCで組み込み開発を行っています。
分散システムでは、異なるノードに同じプログラミング言語を使用するか、送信データの異なるデータ型を調整する準備をする必要があることを読みました。
さまざまなデバイスにさまざまなツールチェーンを使用するためのそのような警告サインはありますか?もしそうなら、ツールチェーンのどの部分が同じである必要がありますか?
とにかくそのための準備をしておく必要があります。これは新しい問題ではありません。これが、たとえばネット上で bigendian データを使用する理由です。DCE、MPI、CORBA など、それを行うためのツールが用意されています。
両側で同じリリースの GCC を使用しても、エンディアン、使用可能なデータ サイズ (long は 64 ビット、int は 16 ビットの場合があります。固定サイズの場合は stdint.h を使用します) などのアーキテクチャの違いは解消されません。 . 上記のプラットフォームと ABI の違いはどちらの方法でも存在するため、異なるツールチェーンを使用しても通常は問題になりません。
とはいえ、複数のプラットフォーム用にプログラムをコンパイルするときに、標準への準拠や一致させたい新機能などに出くわす可能性があり、同じツールチェーンを入手することは、それを達成するための簡単な方法です. これは、そもそも GNU の背後にある原動力の 1 つです。なぜなら、非フリーのベンダーは、ついていけないだけでなく、ついて行ってもお金を欲しがるからです。多くの場合、マシンの交換を余儀なくされるという形でもあります。
1 つのツールまたはツールチェーンに自分自身を固定することにはあまり意味がありません。他のユーザーと通信できるはずの分散システムでは、とにかく通信プロトコルとデータ表現について考える必要があるからです。たとえば、同じツールチェーンを使用していても、ターゲット アーキテクチャによってエンディアンなどの内部データ表現が異なる場合があり、ソフトウェアで処理する必要があります。
ターゲット システムのアーキテクチャや特定のツールチェーンに依存しない通信プロトコルを設計することをお勧めします。このようにして、要件が変更されたときにシステムを再設計する手間を省くことができます (つまり、「通常の」ものと互換性のないバイナリ データ表現を持つ別のターゲット アーキテクチャを追加する必要がある場合や、特別なツールが必要になる場合があります)。