こんにちは。
とある環境で一度コンパイルしたものをUSBなどにコピーして、別のコンピュータなどに移動すると、再コンパイルが必要になるものとそうでないものがあります。
(移動先のコンピュータはコンパイルした環境のOSと同じOSです)
(windows GUI)win32 API / C++ --- 再コンパイル必要無し。
(windows CUI)exe / C --- 確認していませんが、おそらく再コンパイル必要。
(Linux CUI)ELFファイル / C --- 再コンパイルの必要あり。
この認識は間違っています。
同じOSなら原則として同じバイナリが走ります。(再コンパイルしてもできるものは事実上同じものです。)
WindowsでもlinuxでもOSのインストーラに同梱されているCUIツールって本当に多数ありますが、OSのインストール時に再コンパイルしてないですよ。
更に、CUIツールの再コンパイルが必要だった場合、コンパイラはどうやって入手します?
コンパイラもCUIです。確認してはいませんが、gccもELFファイル形式で配布されているのではないでしょうか?
gccの再コンパイルが必要だとすると悪夢ですね。
Linuxやwindowsで別のコンピュータに移しても、再コンパイルなしで実行させることは可能なのでしょうか??
互換性があるハードウェアで同じOSであれば、ほとんどのバイナリは再コンパイル不要です。
再コンパイルで実行できるようになったケースは、ハードウェア(特にCPU)が非互換だったのではないでしょうか?
【raa0121さんの回答を見て追記】
移し方によっては、実行権限が外れてしまい、その状態では実行できなくなってしまうこともあります。
これが正解かも知れません。USBメモリはFAT系のフォーマットが多いので、アクセス権の記録が失われてしまいます。それをlinuxへ戻した時にそのまま実行権がなくなっていると実行できなくなります。
再コンパイルで再度実行権を付与した結果実行できるようになったというシナリオです。
この場合は、chmodで実行権を与えれば実行できるようになると思います。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/12/27 10:05
2016/12/27 10:18
2016/12/27 10:34
2016/12/27 10:50
2016/12/27 10:53
2016/12/27 10:55
2016/12/27 10:57