在Windows下编译支持ACR122U的libnfc

2016-11-12 11:57:24 NFC

阅读前请注意:

  • 这篇文章只讲如何编译libnfc,具体的使用请移步我的这篇文章Mifare Classic 1K智能卡介绍及nfc-tools的使用
  • 我已经编译好了Windows可用的libnfc,如果你对下面的编译步骤感到困难,或者不想动手去做,可以点此下载我编译好的二进制程序。
  • 这篇文章主要参考了这篇教程,但由于它使用的是Windows Vista 32-bit系统而且是为PN532芯片编译的,在细节上会有些不同,而且比较繁琐,因此我重写了相关步骤,以适应于64位系统和ACR122U-A9读卡器。
  • 我使用Windows 7 x64编译,编译出的程序可正常在Windows 10 x64上运行。之所以用Windows 7编译是因为我是在虚拟机里搞的,实际上应该是操作系统无关的。
  • 本文中所有的文件和程序,安装在C:\tools\

下载libnfc源码

在GitHub上找个最新的release下载即可,下载地址

举例来说,我下载了libnfc-1.7.1.tar.bz2。

解压到C:\tools\libnfc-1.7.1\即可。

安装TDM-GCC MinGW

TDM-GCC是一个在Windows上的GCC编译器。

首先下载TDM-GCC,下载地址

举例来说,我下载了tdm64-gcc-5.1.0-2.exe。

安装时注意去掉勾选“Check for updated files on the TDM-GCC server”。

安装在C:\tools\TDM-GCC-64\即可。

安装libusb-win32

libusb是个关于USB操作的库,libusb-win32是在Windows上编译好的二进制链接库。

首先下载libusb-win32,下载地址

举例来说,我下载了libusb-win32-bin-1.2.6.0.zip。

解压到C:\tools\libusb-win32-bin-1.2.6.0\即可。

安装PCRE

PCRE是一个Perl语言兼容正则表达式函数库。

首先下载PCRE,下载地址

举例来说,我下载了pcre-7.0.exe。

安装过程非常常规,安装在C:\tools\GnuWin32\即可。

安装CMake

CMake是一个开源的跨平台自动化建构系统,简单来说,就是可以用它的语法和图形化配置程序生成各种Makefile和IDE的project文件。

首先下载CMake,下载地址

举例来说,我下载了cmake-3.7.0-rc3-win64-x64.msi。

安装过程也很常规,不放图了。

安装在C:\tools\CMake\即可。

配置CMake

执行C:\tools\CMake\bin\cmake-gui.exe

如图,配置好源码所在目录和编译所用目录。

之后点击configure,会让你选择构建所使用的编译器,选择MinGW Makefiles即可。

之后会遇到各种配置问题。按下图配置好即可。(可能会遇到缺少某些选项的情况,这时候只要把已有的内容填好,点击configure就会出现)

注意:一定要勾选LIBNFCDRIVERACR122_PCSC(默认是不勾选的),不然无法正常使用ACR122U-A9。而我们这里使用winscard.h和libwinscard.a代替libpcsc。

由于点击configure之后,PCSC的路径配置项会消失,所以这是在之前截的。如果一切正常,会出现Configuring done字样,如下图。

之后点击Generate,即可生成Makefile文件。

编译

进入到C:\tools\libnfc目录,执行C:\tools\TDM-GCC-64\bin\mingw32-make.exe即可。

等待编译完成。

解决dll依赖

首先,编译好的可执行文件在C:\tools\libnfc\examplesC:\tools\libnfc\utils,将其全部复制到单独的libnfc文件夹中。

之后需要解决dll依赖,把dll复制到exe旁边。

具体来说,有:

  • C:\tools\libnfc\libnfc\libnfc.dll
  • C:\tools\GnuWin32\bin\pcre3.dll
  • C:\tools\libusb-win32-bin-1.2.6.0\bin\x86\libusb0_x86.dll复制并改名为libusb0.dll

测试

插入读卡器,执行nfc-list,出现如下结果则成功!

如果长时间无法加载评论,请对 *.disqus.com 启用代理!