私は、POSIX APIとLinuxを使ったCプログラムを書いています。 友人のMac OSX PCでコンパイルして実行しましたが、小さなエラーがありましたが、Linux固有の機能は使用しませんでした。POSIXの互換性をテストするには?
LinuxがAPIに追加するいくつかの特定の機能を使用します。また、Mac OS XとFreeBSDには特定のPOSIX拡張機能を使用します。
条件付きコンパイルを使用してコードを選択します。 OSにそれらのどれもないなら、私は汎用のPOSIXコードを使用します。
私はDarwin/Mac OSXとFreeBSDを所有していません。私のPCにはLinuxだけがあります。私はFreeBSDをダウンロードしてインストールすることができません。なぜなら、それは500 MB以上であるからです。
プログラムがコンパイルされ、他のPOSIXシステムで期待どおりに動作するかどうかをテストする方法を知りたい。
テストを行うためのPOSIXシミュレータとコンパイラがあるのだろうかと思います。
テストは簡単です、彼らはGUIとドライバを使用しない、彼らはコマンドラインです。
FreeBSD、Mac OSX/Darwin、Generic POSIXの3つのテストが必要ですが、ツールはありません。
EDIT
GUIなしでFreeBSDとダーウィンの最小限のバージョンがあるが、GCC/G ++とssh/scpコマンドで?ダーウィンは自由ですね。
私のPCは古いですが、私はそれらを仮想マシンにインストールし、仮想ネットワークを作成し、ssh/scpを使ってプログラムを転送してテストできると思います。
これは面倒なことですが、 'ポータブルコードはありません。 「移植されたコードのみ」テストするシステムの代わりに使用することはできません。それができない場合は、標準のサブセットをコード化して、異なるシステムに依存する必要があります。条件付きコンパイルを避けるのが最善です。あなたがそれを使用しなければならない場合、それは人生を複雑にします。 –
@ジョナサン:それは、ある程度は真実ですが、過去5〜10年の間に、人々が "奇妙なシステム"への "移植性"のためにした伝統的なことの多くが今のようになりました古きよき古道のように。私は両側で議論が行われることに同意しますが、規格に準拠していない場合、壊れた実装を修正するために標準にコーディングし実装者を嫌うと思うのは、将来に向けて先を進める方法として多くのメリットがあります。私たちは "すべての目標へのポート"ゲームをプレイする必要はありません。 –
また、大きな選手が乗っているときには、より多くの成功を収めています。反対側からは、GCCの多くのUB(署名されたオーバーフローやエイリアス違反など)のクラッキングは、最初は何かを壊してしまったが、プログラマーに壊れたプログラムを修正させるようになってきた。同様に、ビッグネームのアプリケーションによるアプリケーション側からの大胆なアクションは、大きな影響を与える可能性があります。ところで、このアプローチを取っても、必ずしも人気のある壊れたプラットフォームでプログラムが実行されるわけではありません。標準化されたコードをそこで実行させるためには、フィックス/グルーレイヤーを用意する必要があります。 –