Open shareof opened 4 years ago
まだ手元にR/Wがないので、先にgo getでpasoriパッケージの取得だけを行う
Zsh-> ~/gocode
TML[ZsH] go get github.com/bamchoh/pasori
# pkg-config --cflags -- libusb-1.0
Package libusb-1.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `libusb-1.0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'libusb-1.0' found
pkg-config: exit status 1
すると早速エラーが発生してしまった。原因はどうやらlibusbと呼ばれるパッケージがMac本体にインストールされていないことによってPKG_CONFIG_PATH環境変数
からlibusbの所在を見つけられないというものだと予測した。
そのためbrew install libusb
でlibusbパッケージのインストールを行ってPKG_CONFIG_PATH環境変数にbrewでインストールしたlibusbのインストール先(brew --prefix)を指定し、exportしてから再度go getを実行してみた。
結果として正常にパッケージを取り込むことができた。
$ export PKG_CONFIG_PATH=$(brew --prefix libusb)/lib/pkgconfig
go get
TML[ZsH] go get github.com/bamchoh/pasori && echo "Succeed\!"
Succeed!
最後にPKG_CONFIG_PATH環境変数は念のためexportする必要があるか調査を行った。 理由としてはzshrcに記述するのは極力避けたいと思ったからである
# alias relogin='exec $SHELL -l'
$ relogin
TML[ZsH] echo $PKG_CONFIG_PATH
Zsh-> ~
TML[ZsH] cd $GOPATH && go get github.com/bamchoh/pasori && echo "Succeed\!"
Succeed!
結果としてはPKG_CONFIG_PATH
をexportしなくてもlibusbパッケージのロードを行えることがわかった。
念のためpkgのバイナリファイルも展開されている確認してみる。
TML[ZsH] ll pkg/darwin_amd64/github.com/bamchoh
total 104
drwxr-xr-x 3 hacknatural staff 96 Jul 22 06:48 .
drwxr-xr-x 24 hacknatural staff 768 Jul 22 06:48 ..
-rw-r--r-- 1 hacknatural staff 50254 Jul 22 07:10 pasori.a
問題なさそうであるので、次回からが実際にgoのコードで検証すすめる。 posoriのREADMEを参考にしIDmの取得を試みた。
package main
import (
"fmt"
"github.com/bamchoh/pasori"
"log"
)
var (
VID uint16 = 0x054C
PID uint16 = 0x06C3
)
func main() {
if idm, err := pasori.GetID(VID, PID); err != nil {
log.Fatal(err.Error())
} else {
fmt.Println(idm)
}
}
しかし、以下のようなエラーが発生した。
go run ./ic_reader/main.go
2020/07/22 21:02:12 failed to claim config 0 of device vid=054c,pid=06c3,bus=20,addr=1: device vid=054c,pid=06c3,bus=20,addr=1: configuration id 0 not found in the descriptor of the device. Available config ids: [1]
exit status 1
初見のエラーであったため、failed to claim config 0 of device
というエラー内容でググってみることにした。
https://stackoverflow.com/questions/47695160/failed-to-claim-interface-0-device-or-resource-busy
上記のIssueをみると、USB接続に起因する問題であるということが見えてきた。
そのためまず、自前のMacでUSB接続が適切に認識されているか検証することにした。 CLIでUSBの接続を確認できるパッケージがあったのでbrew searchでサポートされていることを確認してからインストールしてみた。
$ brew intstall lsusb
IceBreakv9.0 開発ログ [事前調査] 2020/07/21
環境![image](https://user-images.githubusercontent.com/60165356/87998573-4c2cda80-cb33-11ea-8ee9-5b0e0f8609f0.png)
目標
go get コマンド
でパッケージをローカルにクローンする'ffi.h' file not found
というヘッダファイルが見つからないエラーが発生した。 まず、はじめにffi.hというヘッダーファイルは何を意味するものであるかを探るため、このキーワードで検索をかけてみた。 するとlibffiというパッケージに関連することがわかったので内容を調べると以下のようなものであった。http://lfsbookja.osdn.jp/BLFS/svn-ja/general/libffi.html
つまり、libffiパッケージのインストールを行うことでff.hを内部に包括しているため、事が足りる事がわかった。 ここで先ほどのgo getコマンド時に発せられたエラーに戻り以下のような思考をしてみた。
ファイルが見つからないということはbrewのレポジトリを更新してから再度試してみればよいのではとおもったので
brew upgrade
でリポジトリのハッシュ値を最新にし、brew reinstall libffi
で再度インストールを試みた。 そしてその後に再度go getでパッケージをローカルにクローンしようと試みたが、結果は変わらなかった。試しに
libffiパッケージ
のインストールは既に済んでいるというコンソールログがあったので本当にbrew listに存在するのかも調べてみた。brew listでインストール済みパッケージの洗い出しを行い、libffiで絞り込みをかけてみたところ正常にインストールされていた。
次にgo get でパッケージのインストールを行う際にデバッグオプションなるものがないか調べてみた。 -vオプションで詳細ログを追跡できるという記述があったので実行してみる。
結果としては-vオプションを付けていない時となんら挙動は変わらなかった。
次のアクションとしてIssueから類似しているトピックがないか探すことにした。 https://github.com/egallesio/STklos/issues/6 上記のIssueに類似ているとトピックがあったので候補となるアクションをいろいろと試してみたが、解決にはいたらなかった。 文末の最後に
Hope it works on other MacOs versions.
という言葉が添えられたいたのでおそらくこの筆者もまだ解決にいたっていないと感じた。Next Action
https://qiita.com/YasuakiNakazawa/items/3109df682af2a7032f8d https://github.com/bamchoh/pasori