マシンのソフトウェアとハードウェアが同じであっても、実行可能ファイル (C++ で記述) をすべての Linux マシンでソースから再コンパイルする必要があるのはなぜですか?
私は C++ で書かれた検索エンジンを持っていましたが、それを新しい Linux マシンに移動して動作させるには、毎回再コンパイルする必要があります。
何か案は?
マシンのソフトウェアとハードウェアが同じであっても、実行可能ファイル (C++ で記述) をすべての Linux マシンでソースから再コンパイルする必要があるのはなぜですか?
私は C++ で書かれた検索エンジンを持っていましたが、それを新しい Linux マシンに移動して動作させるには、毎回再コンパイルする必要があります。
何か案は?
Linux-X でコンパイルされた実行可能ファイルが Linux-Y で実行されない理由を尋ねている場合、その理由はおそらく動的ライブラリ (.so) が見つからないか見つからないことです。
編集:申し訳ありませんが、あなたの質問を十分に読んでいないようです。皮肉を取り除きました。
通常、再コンパイルする必要はありません。多くのアプリケーションは実行可能ファイルとして配布されており、正常に動作します。
実行可能ファイルをコピーして別のマシンで実行すると、どのようなエラーが発生しますか?
実行可能ファイルをコピーする方法に問題がある可能性があります。実行可能ファイルが破損している可能性があります。
構成スクリプトが実行されるたびに依存関係と設定を見つけるため、再コンパイルにより、マシンで最適なパフォーマンスが得られます。これにより、ソフトウェアのオープン性も保証されます。そのソースは常に利用可能であり、適切なエージェント (つまり私たち) によって変更可能です。
これは必ずしもそうではありません。たとえば、Ubuntu パッケージのインストール方法を検討してください - https://askubuntu.com/questions/162477/how-are-packages-actually-installed-via-apt-get-install
どうやら、これらは宛先マシンのソースからコンパイルされたのではなく、ビルド済みのバイナリとしてインストールされているようです。そうは言っても、Linux X で何かをビルドして実行するときに発生する可能性のある、互換性のない共有ライブラリ (libc など) を使用するなどの潜在的な問題を回避できるため、バイナリを実行するマシンでソースからバイナリをビルドすることをお勧めします。 Linux Y で。