1

私が読んでいる本は、問題がないことを確認するために、対象のマシンでプログラムをコンパイルすることを提案しています。私が C を学びたいと思った大きな理由の 1 つは、C がすべてのオペレーティング システムと互換性がある (可能性がある) からです。Linuxでこれを使用しています。目的のマシンでプログラムをコンパイルすることができない場合、プログラムが実行されている linux/bsd のバージョンに関係なく、プログラムが完全に実行されるようにするための手順はありますか? さまざまな O/S やさまざまなアーキテクチャの互換機能と、互換性を確保するためにそれぞれの違いに対処する方法をまとめたシートのようなものでしょうか?

4

4 に答える 4

1

ソースの互換性とバイナリの互換性を混同しています。バイナリは間違いなく移植性がありません。それはプログラミング言語とは何の関係もありません。たとえば、BSD でコンパイルされたバイナリは、Linux では決して実行されません。これは、すべての syscall の番号と規則が異なるためです。

ただし、慎重に作成すれば、C コードは移植性があり、さまざまな OS と互換性があるはずです。ターゲットとするプラットフォームごとに個別にコンパイルするだけです。

于 2013-03-08T13:26:23.210 に答える
0

次のいくつかのリンクを参照して、基本的な情報を取得します

http://en.wikipedia.org/wiki/Linux_Standard_Base

http://www.linuxfoundation.org/collaborate/workgroups/lsb

于 2013-03-08T13:15:26.210 に答える
0

標準の C は移植可能ですが、すべての言語と同様に、メモリ管理の外部にあるものや、言語が意図せずに組み込んだ非常に基本的なライブラリは移植できません。

この問題はJavaにもあります.一見移植性のある何かをしたい(コンソールウィンドウの色を緑や赤に設定するなど)ことは不可能だからです.

全体として、example-book C は非常に移植性が高いか、非常にマイナーな修正 (明示的なキャストの作成など) で移植性が高い傾向があります。

于 2013-03-08T13:15:37.783 に答える