背景

  $ go run src\app.go
  # github.com/pebbe/zmq4
  exec: "gcc": executable file not found in %PATH%

安装

  1. 安装 ZeroMQ, 大约 3.9 MB

    打开 ZeroMQ-4.0.4-miru1.0-x64.exe, 默认安装路径是

    C:\Program Files\ZeroMQ 4.0.4
    

    注意安装的是 windows 7 以后的版本, 其他 windows 版本在 distro:microsoft-windows

  2. 安装 gcc

    1. 使用 MinGW-w64, 大约 44MB.

      下载后解压 x86_64-7.1.0-release-win32-seh-rt_v5-rev0.7z. 注意安装的是对应 x64 版本, 其他版本在 mingw-w64/files/

    2. 将以下路径添加到系统环境变量 PATH

      C:\Program Files\mingw-w64\x86_64-7.1.0-win32-seh-rt_v5-rev0\mingw64\bin
      
  3. 复制头文件 zmq.h zmq_utils.h

    C:\Program Files\ZeroMQ 4.0.4\include

    C:\Program Files\mingw-w64\x86_64-7.1.0-win32-seh-rt_v5-rev0\mingw64\x86_64-w64-mingw32\include

  4. 复制 lib 文件 libzmq-v120-mt-gd-4_0_4.lib

    C:\Program Files\ZeroMQ 4.0.4\lib

    C:\Program Files\mingw-w64\x86_64-7.1.0-win32-seh-rt_v5-rev0\mingw64\x86_64-w64-mingw32\lib

    改名为 zmq.lib

  5. 复制 dll 文件 libzmq-v120-mt-gd-4_0_4.dll

    C:\Program Files\ZeroMQ 4.0.4\bin

    C:\Program Files\mingw-w64\x86_64-7.1.0-win32-seh-rt_v5-rev0\mingw64\x86_64-w64-mingw32\bin

    改名为libzmq.dll

  6. 测试 go get github.com/pebbe/zmq4,

    如果没报错就是成功了.

  7. 运行程序时, 出现以下症状时, 有可能需要把 libzmq-v120-mt-gd-4_0_4.dll 放到 app.go 同级目录下面.

    症状: build正常, run异常退出

      $ go build app.go
      $ 
      $ go run app.go 
      exit status 3221225781
    

FAQ

  1. 如果出现 msvcp120d.dll 未能找到的系统错误,尝试将上述所有拷贝的名为 libzmq-v120-mt-gd-4_0_4.xxx的 文件,改为拷贝 libzmq-v120-mt-4_0_4
  1. 如果遇到找不到头文件的问题,尝试将 zmq.h和 zmq_util.h复制到zmq4 的go包的根目录中

答疑

  1. 为什么选择 libzmq-v120-mt-gd-4_0_4.dll 这个文件?

    参考官网, 在 windows7 sp1 以后的系统, 对应的库是 libzmq-v120-mt-gd-4_0_4

    Stable Release 4.0.4

    Binaries built with v90, v100, v110, v110_xp, and v120 toolkits.

    Packages include release and debug dynamic libraries along with PDB files for the debug builds, static libraries are set to appear in the next stable revision.

    The following libraries require Windows 7 SP1, Windows Server 2008R2 or later:

    CompilerToolkitReleaseDebug
    Visual Studio 2012 U4v110libzmq-v110-mt-4_0_4libzmq-v110-mt-gd-4_0_4
    Visual Studio 2013v120libzmq-v120-mt-4_0_4libzmq-v120-mt-gd-4_0_4
  2. 为什么不自己编译?