Windows下使用Cygwin交叉编译libftdi 1.3

因为linux虚拟机挂了,编译软件不方便,另外编译openocd前也需要先编译libftdi,否则编译后的openocd不支持ftdi设备。所以尝试在Windows使用Cygwin来编译libftdi 1.3.

网上也找到一些关于Windows下编译libftdi的文章,不过好像都是编译libftdi的早期版本。采用./configure方式进行配置的,现在的1.3版,已经不存在./configure文件,需要使用cmake进行编译配置。

准备工作:

  • 一个正常运行的Windows 系统 (至少Vista,Cygwin已经停止对XP的支持了)
  • 可以启动起来的Cygwin或者Cygwin64 (本人用的Cygwin64)
  • Cygwin中安装基础工具(make,cmake,autoconf,automake,gcc,mingw,pkg-config,libusb,基于mingw的boost,etc. )
  • libftdi 源码包 https://www.intra2net.com/en/developer/libftdi/index.php
  • libusb 源码包 https://github.com/libusb/libusb/releases
  • 阅读 libftdi 源码包中的 README.mingw,查看额外的依赖项以及构建步骤

libftdi 1.3中的README.mingw文件内容:

 

  • 根据实际需要,选择合适的mingw交叉编译工具链(在Cygwin中安装),并且安装基于mingw的boost(同样也是在Cygwin中安装)。我选择的是x86_64-w64-mingw32(简单讲就是64位cygwin下的编译Windows x64二进制的工具链)。
  • 确认下mingw的目录下是否存在sysroot目录 (默认cygwin所在的目录为根目录,检查/usr/x86_64-w64-mingw32/sys-root是否存在并且不为空),并且基于mingw的boost已正确安装(sysroot目录下是否存在mingw/include/boost目录)。

编译步骤:

  • 根据README.mingw中第1步中的链接,建立一个pkg-config的封装器。文件名需要改成工具链名-pkg-config。例如: x86_64-w64-mingw32-pkg-config。并把该文件放到libftdi源目录下。需要对示例脚本做些许修改。比如增加PKG_CONFIG_ALLOW_SYSTEM_CFLAGSPKG_CONFIG_ALLOW_SYSTEM_LIBS,以及设置正确的sysroot目录。我的x86_64-w64-mingw32-pkg-config文件内容如下:
  • 根据README.mingw中第2步的链接写一个cmake工具链文件,文件名可以自定义,这里为Toolchain-x86_64-w64-mingw32.cmake。该文件也放到libftdi源目录下。需要修改示例中的工具链前缀以及sysroot目录。我的cmake文件内容如下:
  • 根据README.mingw中第3步,解包libusb源码,进入源目录。如果是git版(存在autogen.sh文件)则先执行autogen.sh。然后执行命令:

    其中–host改成当前使用的工具链,–with-sysroot改成上面的sysroot目录。
  • 根据README.mingw中第4步,在libusb源目录执行命令:

    其中DESTDIR改成上面的sysroot目录。
  • 根据README.mingw中第5步,切换到libftdi源目录,执行命令:

    其中DCMAKE_TOOLCHAIN_FILE是第1步建立的工具链cmake文件名;DPKG_CONFIG_EXECUTABLE参数里which后面的内容是第1步建立的pkg-config封装器文件名。
  • 根据README.mingw中第6步,在libftdi源目录执行命令:

    同第4步,DESTDIR改成上面的sysroot目录。如果构建成功的话,终端中应该可以看到如下信息:

     
Print Friendly, PDF & Email
%d 博主赞过: