2012-07-11 3 views
5

私のコンピュータ(Ubuntu 12)でプログラム(SDLを含む)を正常にコンパイルしましたが、a.outは正常に動作します。別のコンピュータでa.outを実行しています

今、a.outを友達に送信しても、それは機能しません。 (単純なエラーメッセージ("Can't be run..")か何かを与える) 私の友人のコンピュータ上の対応するソースファイルを再びコンパイルすると、それは動作します!

私のプログラムを他のコンピュータで実行可能にするには、どうすればコンパイル/コンパイルする必要がありますか?

+2

SDL、glibc、おそらくlibstdC++の互換性のあるバージョンはありません。どのバージョンのものがありますか?静的にバイナリのリンクを解除することができます。そうしないと、サポートしたい最小ライブラリバージョンをコンパイルする必要があります。 – Rup

+0

exeでchmodを実行する必要があるかもしれませんが、以下の答えが適用され、私が提案する方法です – mathematician1975

+9

これは良い質問です。 40年のうちに、誰も簡単な答えを思いついた人はいません。 –

答えて

5

実行可能ファイルは、多くの場合、作成された環境/マシンに固有です。同じプロセッサ/ハードウェアが関与していても、実行ファイルが他のマシン上で実行されているのを防ぐライブラリに依存することがあります。

ソースコードをコンパイルする手順で送信できますか?何のNDAまたはそのアプローチを妨げる他の問題が存在していると仮定していないすべてのことは、バイナリがどのように分布しているかだ後、それは、可能である最後に、もちろん

(私はあなたが言及したので、これはあなたのために働いていたことを示唆している)、しかし、彼ら注意深く構築され、静的にリンクされたライブラリを持ちます(つまり、すべてが実行可能ファイルの一部です)。

+0

私はここにソースがありませんが、ここではこのスニペットは同じ効果があります:http://lazyfoo.net/SDL_tutorials/lesson01/linux/cli/index.php – user1511417

+0

私はSDLが問題だと思います.. dunno – user1511417

+0

@ user1511417おそらく、私は残念なことにそれに精通していない。しかしこれはあなたが経験した珍しい問題/ジレンマ(ソフトウェアの配布)ではありません。 – Levon

0

次の操作を行うためにあなたの友人に尋ねる:

chmod +x a.out 
ldd a.out 

彼は何を見ていますか?もちろん、2つの環境はほぼ同じです(たとえば、Ubuntuなど)。

+0

私は真剣に考えています、これは彼が必要とするものです。さらに、ソースが入手可能なときにバイナリを配布することは、できれば避けるべきことです(NDAは関係しません)。 – Aftnix

関連する問題