前言
笔者最近在windows上编译go,其中模块github.com/pebbe/zmq4
依赖于libzmq
的动态库,整个编译过程不顺利,在此记录一下。
过程
- 对于模块需要依赖闭源系统(如
windows
就是闭源非开源系统)上的动态库,一般需要开启CGO,需要设置CGO_ENABLED
。对于CGO及CGO_ENABLED确切的含义请百度。 set CGO_ENABLED=1
- 下载需要的动态库到本地的一个目录,笔者的动态库目录为
D:\code\golang_project\go_project\lib
- 设置
CGO_CFLAGS/CGO_LDFLAGS
分别指定库头文件和动态库路径,笔者把头文件和动态库放一起了。 set CGOCFLAGS=-I<directory of include files>
set CGOLDFLAGS=-L<directory of libraries> -l:<name of library>
- 执行编译,编译完成后,如需运行生成的可执行文件,需要确保
动态库与可执行文件在同一目录
。一般是将动态库*.dll
拷贝到可执行文件所在的目录。或将动态库放在系统默认库目录(后补充)。
截图如下
具体命令如下:
set CGO_ENABLED=1
set CGO_CFLAGS=-Id:\code\golang_project\go_project\lib
set CGO_LDFLAGS=-Ld:\code\golang_project\go_project\lib -l:libzmq-v140-mt-4_3_4.lib
go build -o main.exe main.go
结尾
- 关于CGO编译的分享到此就结束了。
- 如果觉得还不错,你的
点赞关注加收藏
便是笔者继续更新
的最大动力哦^_^
。