美文网首页编程小技
Windows下编译libnfc,mfoc,mfcuk

Windows下编译libnfc,mfoc,mfcuk

作者: 粗识名姓 | 来源:发表于2018-07-26 18:42 被阅读30次

    整了一个PN532玩,工具自己编译。


    PN532+PL2303

    主要参考:在Windows下编译mofc,不过博主的排版实在是让人...
    还是自己重新来过吧!
    工具还是老一套开源的:cmakeCodeBlockMinGW(含msys)

    编译libnfc

    Step1:CMake-GUI配置


    不细说太多了,看不明白的把我之前的两篇有关cmake编译的文章看看。

    建议先修正Step2中的错误3,不然下面的ConfigureGenerate的操作还得从头来。

    接下来Configure第一次报错,直接确定再点,又报错,修改那三项如图,再点Configure就成功了,之后就是Generate,一次成功!

    Step2:CodeBlock编译

    编译过程中会遇到以下几种错误:

    错误1: unknown type name 'off_t'
    解: 插入#include <sys/types.h>
    错误2: fatal error: strsafe.h: No such file...
    解: 下载补充到路径"/mingw/include"下即可。参考
    错误3: ...undefined reference to `pn53x_transceive'
    解: 参考, 只需对照最后两个文件的修改即可。

    踩过前面的坑,终于看到熟悉的编译成功信息!(无视几个warning)

    编译完成.png
    编译得到的libnfc.dll位于release\libnfc目录,复制到release\utils目录,命令行执行nfc-list得到下图:

    No NFC device found.什么鬼!!!
    之前手动选择的三个选项中,第一项LIBNFC_SYSCONFDIR是用来设置配置文件路径的,我们填的是“.”,也就是程序的当前目录。需要在nfc-list.exe程序目录release\utils下添加配置文件libnfc.conf,文件内容参考源码包中的libnfc.conf.sample
    不确定设备名称的情况下,需要设置参数:allow_intrusive_scan = true默认值是false
    配置文件的方式嫌麻烦,自己用可以修改源代码中的对应默认值:

    libnfc折腾结束!

    编译mfoc 源码

    编译前的准备

    因为源码中没有cmake配置,只能用msys命令行编译了。要用到autoconfautomake,用MinGW Installation Manager如下图安装包:

    MSYS选择包

    编译步骤

    1. 将编译libnfc得到的libnfc.dll.a改名为libnfc.a,放入MinGW路径/mingw/lib内。
    2. pkg.m4文件放入msys路径\share\aclocal-1.11中(参考), 跳过No.2坑(之所以是No.2,因为不做这一步该错误是第二个出现,出错之后安装步骤要重新来过) 不需要安装pkg-config
    3. aclocal -I m4 --install 跳过No.1坑,参考
    4. autoreconf -is
    5. LIBS=/mingw/lib/libnfc.a ./configure PKG_CONFIG=: 跳过No.4坑(原创)和No.3坑(参考)
    6. make

    跳坑记录

    1. configure.ac:17: error: possibly undefined macro: AC_MSG_ERROR
    2. ./configure: line 3739: syntax error near unexpected token libnfc
    3. configure: error: libnfc >= 1.7.0 is mandatory.
    4. undefined reference to ‘_imp__nfc_init’ ... 一连串的undefined reference to
      collect2.exe: error: ld returned 1 exit status

    PS. 上述看似简单的步骤,中间的曲折不足为外人道,手动哭.....

    把编译得到的mfoc.exe和之前得到的libnfc.dll以及libusb0.dll放到同一目录下,运行得到:

    mfcuk走起 源码

    有了mfoc的经历作为前提,mfcuk的编译要简单很多,除了一个头文件endian.h缺失的错误之外,其它的错误都是mfoc编译时遇到过的,这里就不赘述了。
    endian.h文件下载之后,保存到路径/mingw/include下即可。
    需要注意执行时的参数:
    mfcuk.exe -C -R 3:A -S 250 - s 250 -v 2 -w 6
    最后的-w 6是为了避免Error:0x03添加的,可以先不加这个参数试试,出现该错误再加上。

    怎么用? 参考

    网上太多了,略过!

    DONE!

    最后,给拿来主义的同志:)

    相关文章

      网友评论

        本文标题:Windows下编译libnfc,mfoc,mfcuk

        本文链接:https://www.haomeiwen.com/subject/pptimftx.html