把 libnfc 装进 Vagrant

好久以前就入了个 122 玩具,自己在 Mac OS X 下编译 libnfc 折腾着把玩了几次就丢到一边了。后来发现系统偶尔会奇卡,活动监视器显示 pcscd 竟然把 CPU 吃光了?!好,删之。后面不了了之。

libnfc 不知道是否有意为之,默认的编译配置是带不起 122 的,需要自己 ./configure --with-drivers=acr122_pcsc 编译。所以在 Mac 下 brew install libnfc 并不如你所愿。

懒得折腾了,于是昨晚突然兴起,干脆用 Vagrant 封装起来吧。好,就这么决定了。

细节

我用了 ubuntu/trusty64 作为基础镜像。具体的安装过程可以参考项目里的 setup.sh

ACR-122U 驱动

ACR-122U 需要自己的驱动程序,可以从杰龙的官网下载得到,包含了 deb 格式的包。

编译 libnfc

根据官方的步骤,有三类库可以直接 apt-get 安装的。首先是编译需要用到的工具:

sudo apt-get install libextutils-pkgconfig-perl libtool unzip

然后是编译 libnfc 编译时需要引用的库:

sudo apt-get install libusb-dev libpcsclite-dev libextutils-pkgconfig-perl libtool unzip

最后是 libnfc 运行时调用的:

sudo apt-get install libusb-0.1-4 libpcsclite1 libccid pcscd

最后的 pcscd 是一个通用的智能卡读卡器框架,是一个守护进程。正是这玩意在 Mac 下吃资源。

下载最新的 libnfc 源代码,解压。根据官方的设备支持表格,ACR-122U 应该使用 acr122_pcsc 驱动的,但是 libnfc 默认的编译配置并没有带上它,所以要自己指定配置:

./configure --with-drivers=acr122_pcsc

好在,上面这堆过程我已经封装在 xingrz/libnfc-acr122u-vagrant 里了,哈哈~~~

git clone https://github.com/xingrz/libnfc-acr122u-vagrant.git
cd libnfc-acr122u-vagrant
vagrant up
vagrant reload

纯粹偷懒,也希望能让新人减少走弯路。