始めに
皆さん、ErlangのObserverを使用されていますか!
私は好きでよく見たり、検証の時などは開いてみたりしてチェックしたりと好きで使っています。
今回はobserver.start()
してエラーが出たときの対処をしたのですが日本語の記事は検索能力が低かったのか見つからなかったので記載していこうと思います
環境
macOS Catalina
wxWidgets 3.1.5
ERROR: Could not find 'wxe_driver.so' のエラーが出る
iex
を起動してobserver.start()
をしてみたところ下記のようなエラーが出力されました。
{:error,
{{:load_driver, 'No driver found'},
[
{:wxe_server, :start, 1, [file: 'wxe_server.erl', line: 65]},
{:wx, :new, 1, [file: 'wx.erl', line: 115]},
{:observer_wx, :init, 1, [file: 'observer_wx.erl', line: 107]},
{:wx_object, :init_it, 6, [file: 'wx_object.erl', line: 404]},
{:proc_lib, :init_p_do_apply, 3, [file: 'proc_lib.erl', line: 226]}
]}}
検索するとこちらの記事のように出てきます。
あまり使わない環境なので入れてなかったか、ごめんなさいと思いながら brew install wxwidgets
を実行し、asdf で Erlangを入れ直しました。
それでも止まらぬエラー
入れ直しましたが、それでもエラーの結果は変わりません。
なんでだろうなーっと思いながらErlangのインストール時のログを読んでみると下記のように記載されていました
* wx : wxWidgets was not compiled with --enable-compat28, wx will NOT be useable
* Can not link the wx driver, wx will NOT be useable
--enable-compat28
のオプションが指定されていないと使用できないようなのでオプション指定する必要がありそうです。
asdf-erlangのIssueに、brew edit
でwxWidgetsのインストール時のargsを書き換えて、--enable-compat28
のオプションを追加すればイケるっという記載があります。
これで勝ったな!っと思い実行していきます。
それでもエラーは変わらない
実際に --enable-compat28
を追加してbrew install
をし直しますが、それでもエラーは変わりません。
なんなら、wxWidgets was not compiled with --enable-compat28, wx will NOT be useable
の表示も消えません。
そんなことある!?っと思いながら、なんでだろうななんでだろうなーっと思っていたら、ElixirForumに答えは載っておりました
brew upgrade wxmac --build-from-source
どうやら、オプションで明示的にソースからビルドしようねっという指定が必要のようです。
実際に私が実行したコマンドはbrew reinstall wxmac --build-from-source
でしたが、こちらで問題なくobserver.start()
できるようになりました。
wxwidgets
とwxmac
の違いは名前指定の指定ぐらいなのでここでは気にする必要はありません。
結論
ElixirForum は本当に参考になるので毎回ありがとうございます!!