新型コロナウイルス感染拡大防止のために、あまり出歩かないようにしています。お店での買い物も日用品以外は、ネット通販に頼る頻度が増えてきました。
自宅まで運んでもらえるのは嬉しいのですが、配達時間中はインターフォンが鳴らないか、いつも気にしていなければないのが、すこし不満でした。
自宅のインターフォンは、1Fにしか付いておらず、2Fにいると、全く聞こえずに自宅に居たのに受け取る事ができなかった事も多々あります。配達の方々にも申し訳ありませんし、常に気を配っているのにも疲れました。
というわけで、このお盆の間に、Arduinoを使ってなんとかしてみよう!とボードを買い込みました(ここで受け取るのにまたストレスが・・・)
チョットだけ回路図を描いてみたい
やりたい事が概ねできるようになったので、blogに載せてみようか。それにはきれいな回路図を描いて載せたい!と思いますよね。
ネット上のArduino系の製作記事を読んでいると、みなさんだいたい「fritzing」というツールを使って回路図を描いています。無料ツールと紹介されている事が多いので、さっそく試してみようとダウンロードページへ行ってみると、いつからか、最低でも8ユーロ(1000円くらい)を払わないとダウンロードできなくなっていました(windows版だけ?)
紹介記事をみる限りだと使い勝手の良いツールだそうですので、1000円を払うのに抵抗はありませんが、買う前にちょっとお試ししてみたいです。ホームページにはOpenSourceと書かれていて、実際にgithubでソースコードが公開されていています。そして、windows用はありませんでしたが、コンパイル済みのバイナリが置いてありましたので Windows10上のWSLの中でLinux用のバイナリを実行してみました。
利用環境
- Windows10
- WSLが有効化済みで、ディストリビューションが導入済みであること
(うちでは、Ubuntu 20.04を入れています)
- WSLが有効化済みで、ディストリビューションが導入済みであること
- VcXsrv (X Server)が導入済みであること
インストールの方法
WSL(Windows Subsystem for Linux)が有効になっていれば、バイナリを展開して起動するだけです。
2020.12.11追記:
WSLのバグにより、この記事のままではfritzingが起動しない。とWさんからコメントを頂きました。ありがとうございます。
最後に回避法を追記しました。
VcXsrvを起動
起動時の注意として、ACLを適切に設定する必要があります。が、自宅内のネットワークならば、ACLを無効にしても良いでしょう。
WSLを起動
https://github.com/fritzing/fritzing-app/releases へ移動して最新リリースを確認します。
pre-releaseは開発版なので、緑色のLatest releaseタグがついている項目を探します。
ありました!これが最新版ですね。更にページを下へ移動していくと、
バイナリ一覧が載っています。その中でマッチするものをダウンロードします。Ubuntu 20.04用は用意されていないので、Ubuntu 18.04用をダウンロードしました。
ここからは、WSLの中で作業を行います。
1 2 3 4 |
$ wget https://github.com/fritzing/fritzing-app/releases/download/CD-498/fritzing-a1ffcea08814801903b1a9515b18cf97067968ae-master-498.bionic.linux.AMD64.tar.bz2 $ tar jxf ./fritzing-a1ffcea08814801903b1a9515b18cf97067968ae-master-498.bionic.linux.AMD64.tar.bz2 $ cd fritzing-a1ffcea08814801903b1a9515b18cf97067968ae-master-498.bionic.linux.AMD64/ $ ./Fritzing & |
おそらくDynamic Libraryがロードできないというエラーが表示されると思います。
1 |
error while loading shared libraries: libQt5SerialPort.so.5: cannot open shared object file: No such file or directory |
ライブラリが足りないというエラーなので、必要なライブラリをインストールします。ライブラリを探すときは、エラーメッセージに表示された名前で検索していきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
$ apt search libQt | grep -i serial libqt5serialbus5/focal 5.12.8-0ubuntu1 amd64 Qt serialbus - serial bus access shared library libqt5serialbus5-bin/focal 5.12.8-0ubuntu1 amd64 Qt Serialbus module serial bus access helper binaries libqt5serialbus5-dev/focal 5.12.8-0ubuntu1 amd64 Qt serialbus serial bus access development libqt5serialbus5-plugins/focal 5.12.8-0ubuntu1 amd64 Qt serialbus - serial bus access plugins libqt5serialport5/focal 5.12.8-0ubuntu1 amd64 <--- これっぽい Qt 5 serial port support libqt5serialport5-dev/focal 5.12.8-0ubuntu1 amd64 Qt 5 serial port development files |
このようにエラーが出たら、足りないライブラリをインストールを何度か繰り返すとだだしく起動すると思います。
1 |
$ sudo apt install libqt5serialport5 libqt5sql5 libqt5xml5 |
うちの環境では、上記3つのライブラリを導入後、正常に起動するようになりました。
1 |
$ ./Fritzing & |
起動時は言語設定が「英語」ですが、メニューの [Edit] ->[Preference] とたどりLanguage設定で日本語を選択後、再起動すれば、日本語メニューが表示されるようになります!
最後に
tarアーカイブを展開すると、install用スクリプトが用意されています。今回は、お試しで使ってみたかっただけなので、実行しませんでした。
今後、このFritzing 電子回路エディターを頻繁に利用するようになりそうなら、8ユーロを寄付して、windows版をダウンロードしてもいいかなーと思います。
うーーーん。こういうのは、センスが必要ですねぇ (´・ω・`)
shared library が認識されず fritzingが起動しない時のworkaround
2020.12.11追記しました。
必要なライブラリを入れたにもかかわらず、firtzingを起動する際にこのようなエラーが出て、ライブラリが認識されない場合があるようです。
1 2 |
$ ./Fritzing /tmp/fritzing-a1ffcea08814801903b1a9515b18cf97067968ae-master-498.bionic.linux.AMD64/lib/Fritzing: error while loading shared libraries: libQt5Core.so.5: cannot open shared object file: No such file or directory |
libQt5Core.so.5は存在しているのに・・・不思議。
firtzingにリンクしているライブラリを調べてみると、確かに libQt5Core.so.5が認識されていません。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
$ ldd /tmp/Fritzing linux-vdso.so.1 (0x00007fffe53f0000) libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fcda3c50000) libssl.so.1.1 => /lib/x86_64-linux-gnu/libssl.so.1.1 (0x00007fcda3bb0000) libcrypto.so.1.1 => /lib/x86_64-linux-gnu/libcrypto.so.1.1 (0x00007fcda38d0000) libQt5PrintSupport.so.5 => /lib/x86_64-linux-gnu/libQt5PrintSupport.so.5 (0x00007fcda3850000) libQt5Svg.so.5 => /lib/x86_64-linux-gnu/libQt5Svg.so.5 (0x00007fcda37f0000) libQt5Widgets.so.5 => /lib/x86_64-linux-gnu/libQt5Widgets.so.5 (0x00007fcda3150000) libQt5Gui.so.5 => /lib/x86_64-linux-gnu/libQt5Gui.so.5 (0x00007fcda2b50000) libQt5Network.so.5 => /lib/x86_64-linux-gnu/libQt5Network.so.5 (0x00007fcda2980000) libQt5SerialPort.so.5 => /lib/x86_64-linux-gnu/libQt5SerialPort.so.5 (0x00007fcda2960000) libQt5Sql.so.5 => /lib/x86_64-linux-gnu/libQt5Sql.so.5 (0x00007fcda2910000) libQt5Xml.so.5 => /lib/x86_64-linux-gnu/libQt5Xml.so.5 (0x00007fcda28c0000) libQt5Core.so.5 => not found libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fcda288d000) libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fcda26a0000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fcda2551000) libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fcda2530000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fcda2330000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fcda2320000) libQt5Core.so.5 => not found libQt5Core.so.5 => not found libQt5Core.so.5 => not found libQt5Core.so.5 => not found libGL.so.1 => /lib/x86_64-linux-gnu/libGL.so.1 (0x00007fcda2280000) libpng16.so.16 => /lib/x86_64-linux-gnu/libpng16.so.16 (0x00007fcda2230000) libharfbuzz.so.0 => /lib/x86_64-linux-gnu/libharfbuzz.so.0 (0x00007fcda2120000) libQt5Core.so.5 => not found libQt5Core.so.5 => not found libudev.so.1 => /lib/x86_64-linux-gnu/libudev.so.1 (0x00007fcda20f0000) /lib64/ld-linux-x86-64.so.2 (0x00007fcda4804000) libQt5Core.so.5 => not found libQt5Core.so.5 => not found libGLdispatch.so.0 => /lib/x86_64-linux-gnu/libGLdispatch.so.0 (0x00007fcda2020000) libGLX.so.0 => /lib/x86_64-linux-gnu/libGLX.so.0 (0x00007fcda1fe0000) libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007fcda1eb0000) libfreetype.so.6 => /lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007fcda1de0000) libgraphite2.so.3 => /lib/x86_64-linux-gnu/libgraphite2.so.3 (0x00007fcda1db0000) libX11.so.6 => /lib/x86_64-linux-gnu/libX11.so.6 (0x00007fcda1c70000) libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007fcda1bf0000) libxcb.so.1 => /lib/x86_64-linux-gnu/libxcb.so.1 (0x00007fcda1bc0000) libXau.so.6 => /lib/x86_64-linux-gnu/libXau.so.6 (0x00007fcda1ba0000) libXdmcp.so.6 => /lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007fcda1b90000) libbsd.so.0 => /lib/x86_64-linux-gnu/libbsd.so.0 (0x00007fcda1b70000) |
これはバグかな?とぐぐってみると見つけました。
ELF section .note.ABI-tag breaks shared libraries #3023
変なタグが埋め込まれていてshared libraryとして認識されないと言っているのかな?
問題の回避法
バグだと言うことはわかりましたが、修正はすごい人達におまかせして、とりあえずの回避策です。
1 2 3 |
$ sudo apt -y install libqt5serialport5 libqt5sql5 libqt5xml5 libqt5printsupport5 libqt5core5a $ sudo apt -y install binutils $ sudo strip --remove-section=.note.ABI-tag /usr/lib/x86_64-linux-gnu/libQt5Core.so.5 |
無事に起動すると思います。よかったよかった。