2012-01-05 9 views
0

私はまだerlangの初心者ではない、私はただErlangで書かれているRabbitMQを使用しています。 configure/make/make installを実行したあと、ビルド出力ディレクトリには、たくさんの.cファイルと.erlファイルがあります。これは必要ですか?その背後にある理由は何ですか? いくつかの例:なぜerlangビルドに.cと.erlソースが含まれていますか?

  • ./lib/erlang/lib/erl_interface-3.7.6/src/misc/show_msg.c
  • ./lib/erlang/lib/cosNotification-1.1.18/src/ oe_CosNotification.erl

答えて

2

はい、必要です。 ErlangのランタイムシステムはC言語で書かれており、標準ライブラリのほとんどはErlangで書かれています。

その背景には何がありますか?

代替手段は何ですか? Erlangコードを実行するには、ランタイムシステムを既に起動させておく必要があります。そのため、Erlangで記述することはできません。

  1. 総会

  2. C

  3. C++またはその他の言語

  4. Erlangのランタイムなしで実行することができ

アセンブリ:それはで書かれていても大丈夫明らかに悪い選択です:あなたはrにする必要があります新しいCPUターゲットのためにほぼ完全にewriteしてください。維持するのがずっと難しくなります。

Cは優れたパフォーマンスと移植性を提供し、ErlangのCコードを呼び出す能力は必要となります。これは、Erlangだけでなく、Python、Ruby、Perlなどでも行われます。

C++は移植性を複雑にします(一部のOSにはCコンパイラがありますが、C++コンパイラは使用できません.C++コンパイラの品質はさらに異なります)。他の言語も(パフォーマンスとともに、おそらく独自のランタイムを必要とするなど)さらに多くのことが起こります。

最後のオプションは、Erlangを完全に別の言語にします。

+0

私はconfigure/make/make installを実行した後、出力ディレクトリにはcとerlファイルが含まれています。 –

+1

@AdamRabung Erlangはデフォルトで、実行時に各ライブラリアプリケーションのバイナリ( 'ebin'と' .so 'ファイル)とソースコード( 'src'と' c_src'ディレクトリ)の両方をインストールします'make install'を実行します。 –

+0

@Adam Lindberg - それは間違いなく私が見ていることです - 推論を知っていますか? –

関連する問題