2011-08-09 14 views
3

私は、標準ライブラリ関数だけを使って暗号計算を行うかなりシンプルなCプログラムを持っています。OS XでCプログラムをコンパイルしてUbuntu上で実行する

Ubuntu(10.04,32ビット)でプログラムを実行し、-m32フラグ付きでccを使用してOS X 10.6でコンパイルします。私がUbuntuで実行しようとすると、 "バイナリファイルを実行できません"というエラーメッセージが表示されます。

私はUbuntuでコンパイルするとうまく動作します。

OS XのコードをUbuntu上で動作するバイナリに簡単にコンパイルする方法はありますか?そうでない場合、バイナリの互換性を損なう相違点は何ですか?

+0

部分複製:http://stackoverflow.com/questions/5245444/cross-compiler-for-linux-on-mac-os-xこれは[crosstool-NG'](http:// crosstool -ng.org)。 – darvids0n

答えて

1

gccの移植性を最低限に抑えることはできません。

もちろん、クロスコンパイラlike thisをビルドすることはできますが、ubuntu仮想マシンを使用してコンパイルすることをお勧めします。

+0

できます!私はこの前にこれを成功させました。GCCは移植性に優れています。ポータブルではないサポート構造(ライブラリとカーネルインタフェース)です。あなたのクロスコンパイラを構築することは特に簡単ではないし、不注意のためにフィールドにたくさんの鉱山があります。最近では、仮想マシンの偏在性を考慮すると、単に仮想マシンを使用する方が簡単で安全です。 –

3

クロスコンパイラをセットアップする必要があります。

  1. ダウンロードbinutilsgcc、およびglibc:GNUツールチェーンを使用して、プロセスは次のようになります。
  2. ビンタルス(binutils-x.y.zのようなもの)。
  3. ます。mkdirのbinutils-linuxの
  4. CDのbinutils-linuxの
  5. ../binutils-xyz/configure --target = i386の-のubuntu-linuxの(正確なターゲットにわからない)
  6. sudoを作りますmake install
  7. cd ..
  8. (gcc-xyzのようなものに)。
  9. ます。mkdirのgcc-linuxの
  10. CDのgcc-linuxが
  11. ../gcc-xyz/configure --target = i386の-のubuntu-linuxの(正確なターゲットにわからない)
  12. sudoを作りますmake installを
  13. CD ..
  14. は、mkdirのglibc-linuxの
  15. のCDのglibc-LINX
  16. 0123(glibcの-xyzのようなものまで)
  17. untarしたglibc
  18. ../glibc-xyz/configure --target = i386の-のubuntu-linuxの(正確なターゲットにわからない)
  19. sudoを作る
  20. CDをインストールします。..

IホストOSとしてOSXを試みたことは一度もありませんでしたので、他の問題があるかどうかはわかりませんが、これが一般的なアプローチです。私はメモリから作業しているので、もっと助けが必要な場合はコメントを追加してください。

+0

情報ありがとうございます。私はコンパイルに使うためにVirtualBoxにUbuntuのコピーをインストールするつもりだと思う。それは最も簡単なルートのようです。 –

+0

ターゲットとするディストリビューションに近いLinuxカーネルヘッダーが必要です。 GLIBCはそれらを持っていなければカーネルとインターフェースできません。 –

+0

gccをコンパイルするには数分以上かかることに注意してください。また、binutilsとglibcの正しい設定オプションを得るには、何らかの調査が必要になるかもしれません。 – RBerteig

関連する問題