モジュールgb_trees
の機能の変更が必要な問題を解決するために取り組んでいます。Erlang/OTP:既存のモジュールへの変更
私はgb_trees
の編集されたバージョンをコンパイルエラーを取得しています:
1> c(gb_trees).
cannot write to .bea#
...
2>
私は変更を行い、既存のモジュールをコンパイルすることができます方法は何ですか?
モジュールgb_trees
の機能の変更が必要な問題を解決するために取り組んでいます。Erlang/OTP:既存のモジュールへの変更
私はgb_trees
の編集されたバージョンをコンパイルエラーを取得しています:
1> c(gb_trees).
cannot write to .bea#
...
2>
私は変更を行い、既存のモジュールをコンパイルすることができます方法は何ですか?
ファイルが別のプロセスで使用されている可能性があります。使用しているすべてのアプリケーションを終了するか、OSを再起動して再コンパイルしてみてください。
Erlang/OTPの一部であるモジュールを手動でロードしようとしています。ドキュメントから
:
Erlangのランタイムシステムは、あなたを守る です。
最も簡単な解決策は、お客様の モジュールの名前を変更することです。 mysets.erlに。ライブラリモジュールを含むディレクトリ を「アンスティック」することも可能です。 です。
code:unstick/1
を参照してください。また
:
誤っErlangのランタイム システム自体に影響を与える モジュールをリロード防止するためには、
kernel
、stdlib
とcompiler
ディレクトリは スティッキーと考えられています。これは、ユーザーが モジュールをリロードしようとすると、システム が警告を出し、 要求を拒否することを意味します。 機能は、 コマンドラインフラグ-nostick
を使用して無効にすることができます。
erl(1)
を参照してください。例えば
:
$ erl -nostick
Eshell V5.7.3 (abort with ^G)
1> c(gb_trees).
{ok,gb_trees}
2> gb_trees:module_info().
[{exports,[{foo,2},{module_info,0},{module_info,1}]},
{imports,[]},
{attributes,[{vsn,[338095567601101424197378397768992511838]}]},
{compile,[{options,[]},
{version,"4.6.3"},
{time,{2011,2,3,11,39,53}},
{source,"/tmp/gb_trees.erl"}]}]
3>
あなたは私たちがVMにモジュールをコンパイルしてロードすることができていることがわかります。
あなただけgb_trees_mine
のようなものにあなたのモジュールgb_trees
の名前を変更し、それがエクスポート機能を使用することができますしかし:
1> gb_trees_mine:foo(13,42).
bar
2>