美文网首页超级程序猿Golang 入门资料+笔记Golang
windows下使用confluent-kafka-go报错的问

windows下使用confluent-kafka-go报错的问

作者: 邵佳楠 | 来源:发表于2019-09-29 08:25 被阅读0次

    该篇内容由个人博客点击跳转同步更新!转载请注明出处!

    都说Go语言是跨平台的语言,不管是在linux还是windows都能进行开发,但在我开发的这一阵来,深深体会到了在windows下使用Go的一些开源库导致的各种问题,以下主要说下我在使用confluent-kafka-go时遇到的问题。
    我主业是搞.NET的,最近有个项目需要搞服务端,Go自然是最简单快捷的选择,需求需要将数据同步到kafka,以我.Net多年的经验confluent-kafka是我使用最多的操作库,自然而然就去GIT里找对应的Go的操作库了,经过一阵折腾准备信心满满的运行时,啪~出现各种错误:
    pkg-config: exec: "pkg-config": executable file not found in %PATH%
    mingw: exec: "gcc++": executable file not found in %PATH%
    __debug_bin access is denied
    No such file or directory #include <sys/socket.h> /* for sockaddr, .. */
    xxx,exit status 3221225781
    rdkafka.pc not found
    我主要列了一些主要的错误出来实际可能遇到的还要多,一看什么gcc什么pkg-config这啥不是我在linux里面遇到的嘛 windows咋装,我丢 。。。。继续看git上confluent-kafka-go的介绍

    介绍 我丢,直接告诉我不支持Windows,你说好好的一个跨平台的语言,你个开源库告诉我不支持Windows,这不得气死。但是各位不慌,经过我的各种折腾,问题已经解决了,主要步骤如下:

    1、下载cygwin64

    cygwin64是一个能让你在windows下像操作linux一样的东西,安装的时候首先各种下一步,到这里选安装东西的时候要选择两样,一个是pkg-config,一个是x86_64-w64-mingw32-gcc两个都安装最新版本,选择完直接下一步到最后

    gcc
    pkg-config

    2、设置环境变量

    设置环境变量把你刚才装的cygwin64路径添加到环境变量PATH中去,比如我安装在C:\cygwin64,那就在path中添加这个路径

    3、使用nuget下载kafka操作的文件

    nuget是啥,.net开发的同学肯定知道。一个包管理器这个不多说,没有的同学去这个地址下载,然后输入以下命令下载包文件nuget install librdkafka.redist -Version 1.2.0 (这是我当前的最新版本)下载完成后会在你的目录中看到这个解压 好的文件夹

    rdkafka

    4、kafka文件复制到cygwin64中去

    复制 .\librdkafka.redist.1.2.0\build\native\include\ 到这个目录 c:\cygwin64\usr\include
    复制 .\librdkafka.redist.1.2.0\build\native\lib\win7\x64\win7-x64-Release\v120\librdkafka.lib 到这个目录c:\cygwin64\lib\librdkafka.a (注意:这里复制过去后还要重命名成.a后缀的)
    复制 \librdkafka.redist.1.2.0\runtimes\linux-x64\native\librdkafka.so 到这个目录 C:\cygwin64\lib

    5、创建rdkafka.pc文件

    这个文件我也不知道干嘛的,反正不加会报错,c:\cygwin64\pkgconfig直接在这个目录下添加这个文件,没有对应文件夹自己手动新建,内容为:

    prefix=c:/
    libdir=c:/cygwin64/lib/
    includedir=c:/cygwin64/usr/include
    
    Name: librdkafka
    Description: The Apache Kafka C/C++ library
    Version: 0.11.4
    Cflags: -I${includedir}
    Libs: -L${libdir} -lrdkafka
    Libs.private: -lssl -lcrypto -lcrypto -lz -ldl -lpthread -lrt
    

    6、复制librdkafka.dll, msvcr120.dll和zlib.dll到你对应的工作文件目录下

    这是最后一步,也是最重要的一步,.\librdkafka.redist.1.2.0\runtimes\win-x64\native把这个目录下的那三个dll文件复制到你程序的目录下去简单讲就是你main.go的同级目录

    以上就是该问题的解决方式,搞完这些大部分同学已经好了,但可能有部分还会提示如下错误
    rdkafka.h:83:47: fatal error: sys/socket.h: No such file or directory这个错误是缺少socket文件,也简单,自己手动加,这个目录下新建socket.h文件c:/cygwin64/usr/include/sys(没有文件夹自己新建),里面的内容去这里复制socket.h文件的内容

    微信关注我哦!(转载注明出处) 关注我哦

    相关文章

      网友评论

        本文标题:windows下使用confluent-kafka-go报错的问

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