英文:
ZeroMq Golang binding cannot build on Windows
问题
我正在尝试在Windows上使Go ZMQ4绑定工作。不幸的是,我无法构建zmq库和Gozmq软件,并且出现以下错误:
*** 由于此库不能包含未定义的符号,
*** 因为平台不支持它们或
*** 它是通过-no-undefined显式请求的,
*** libtool只会创建其静态版本。
make[2]: 离开目录“/e/Users/mmarques/Desktop/zeromq-4.0.5/src'
make[1]: 离开目录“/e/Users/mmarques/Desktop/zeromq-4.0.5/src'
在文档中进行全部制作
make[1]: 进入目录“/e/Users/mmarques/Desktop/zeromq-4.0.5/doc'
make[1]: 无需执行任何操作。
make[1]: 离开目录“/e/Users/mmarques/Desktop/zeromq-4.0.5/doc'
在perf中进行全部制作
make[1]: 进入目录“/e/Users/mmarques/Desktop/zeromq-4.0.5/perf'
CXX local_lat.o
CXXLD local_lat.exe
local_lat.o: 在函数“main”中:
e:\Users\mmarques\Desktop\zeromq-4.0.5\perf/local_lat.cpp:45: 对“__imp_zmq_init”的未定义引用
e:\Users\mmarques\Desktop\zeromq-4.0.5\perf/local_lat.cpp:51: 对“__imp_zmq_socket”的未定义引用
e:\Users\mmarques\Desktop\zeromq-4.0.5\perf/local_lat.cpp:57: 对“__imp_zmq_bind”的未定义引用
e:\Users\mmarques\Desktop\zeromq-4.0.5\perf/local_lat.cpp:63: 对“__imp_zmq_msg_init”的未定义引用
e:\Users\mmarques\Desktop\zeromq-4.0.5\perf/local_lat.cpp:69: 对“__imp_zmq_recvmsg”的未定义引用
e:\Users\mmarques\Desktop\zeromq-4.0.5\perf/local_lat.cpp:75: 对“__imp_zmq_msg_size”的未定义引用
e:\Users\mmarques\Desktop\zeromq-4.0.5\perf/local_lat.cpp:79: 对“__imp_zmq_sendmsg”的未定义引用
e:\Users\mmarques\Desktop\zeromq-4.0.5\perf/local_lat.cpp:72: 对“__imp_zmq_strerror”的未定义引用
e:\Users\mmarques\Desktop\zeromq-4.0.5\perf/local_lat.cpp:86: 对“__imp_zmq_msg_close”的未定义引用
e:\Users\mmarques\Desktop\zeromq-4.0.5\perf/local_lat.cpp:92: 对“__imp_zmq_sleep”的未定义引用
e:\Users\mmarques\Desktop\zeromq-4.0.5\perf/local_lat.cpp:94: 对“__imp_zmq_close”的未定义引用
e:\Users\mmarques\Desktop\zeromq-4.0.5\perf/local_lat.cpp:100: 对“__imp_zmq_term”的未定义引用
e:\Users\mmarques\Desktop\zeromq-4.0.5\perf/local_lat.cpp:102: 对“__imp_zmq_strerror”的未定义引用
e:\Users\mmarques\Desktop\zeromq-4.0.5\perf/local_lat.cpp:81: 对“__imp_zmq_strerror”的未定义引用
e:\Users\mmarques\Desktop\zeromq-4.0.5\perf/local_lat.cpp:59: 对“__imp_zmq_strerror”的未定义引用
e:\Users\mmarques\Desktop\zeromq-4.0.5\perf/local_lat.cpp:65: 对“__imp_zmq_strerror”的未定义引用
e:\Users\mmarques\Desktop\zeromq-4.0.5\perf/local_lat.cpp:96: 对“__imp_zmq_strerror”的未定义引用
local_lat.o:e:\Users\mmarques\Desktop\zeromq-4.0.5\perf/local_lat.cpp:88: 跟随更多未定义引用“__imp_zmq_strerror”
collect2.exe: 错误: ld 返回了 1 退出状态
make[1]: *** [local_lat.exe] 错误 1
make[1]: 离开目录“/e/Users/mmarques/Desktop/zeromq-4.0.5/perf'
make: *** [all-recursive] 错误 1
我所做的是下载Zmq源代码并执行以下操作:
sh configure
make
有人可以帮助我解决这个问题,并在Windows环境中设置Zmq Go绑定吗?
英文:
I'm trying to get Go ZMQ4 binding to work on windows.
Unfortunately, i'm not able to build the zmq library neither Gozmq software and get the following errors:
*** Since this library must not contain undefined symbols,
*** because either the platform does not support them or
*** it was explicitly requested with -no-undefined,
*** libtool will only create a static version of it.
make[2]: Leaving directory /e/Users/mmarques/Desktop/zeromq-4.0.5/src'
/e/Users/mmarques/Desktop/zeromq-4.0.5/src'
make[1]: Leaving directory
Making all in doc
make[1]: Entering directory /e/Users/mmarques/Desktop/zeromq-4.0.5/doc'
all'.
make[1]: Nothing to be done for
make[1]: Leaving directory /e/Users/mmarques/Desktop/zeromq-4.0.5/doc'
/e/Users/mmarques/Desktop/zeromq-4.0.5/perf'
Making all in perf
make[1]: Entering directory
CXX local_lat.o
CXXLD local_lat.exe
local_lat.o: In function main':
__imp_zmq_init'
e:\Users\mmarques\Desktop\zeromq-4.0.5\perf/local_lat.cpp:45: undefined referenc
e to
e:\Users\mmarques\Desktop\zeromq-4.0.5\perf/local_lat.cpp:51: undefined referenc
e to __imp_zmq_socket'
__imp_zmq_bind'
e:\Users\mmarques\Desktop\zeromq-4.0.5\perf/local_lat.cpp:57: undefined referenc
e to
e:\Users\mmarques\Desktop\zeromq-4.0.5\perf/local_lat.cpp:63: undefined referenc
e to __imp_zmq_msg_init'
__imp_zmq_recvmsg'
e:\Users\mmarques\Desktop\zeromq-4.0.5\perf/local_lat.cpp:69: undefined referenc
e to
e:\Users\mmarques\Desktop\zeromq-4.0.5\perf/local_lat.cpp:75: undefined referenc
e to __imp_zmq_msg_size'
__imp_zmq_sendmsg'
e:\Users\mmarques\Desktop\zeromq-4.0.5\perf/local_lat.cpp:79: undefined referenc
e to
e:\Users\mmarques\Desktop\zeromq-4.0.5\perf/local_lat.cpp:72: undefined referenc
e to __imp_zmq_strerror'
__imp_zmq_msg_close'
e:\Users\mmarques\Desktop\zeromq-4.0.5\perf/local_lat.cpp:86: undefined referenc
e to
e:\Users\mmarques\Desktop\zeromq-4.0.5\perf/local_lat.cpp:92: undefined referenc
e to __imp_zmq_sleep'
__imp_zmq_close'
e:\Users\mmarques\Desktop\zeromq-4.0.5\perf/local_lat.cpp:94: undefined referenc
e to
e:\Users\mmarques\Desktop\zeromq-4.0.5\perf/local_lat.cpp:100: undefined referen
ce to __imp_zmq_term'
__imp_zmq_strerror'
e:\Users\mmarques\Desktop\zeromq-4.0.5\perf/local_lat.cpp:102: undefined referen
ce to
e:\Users\mmarques\Desktop\zeromq-4.0.5\perf/local_lat.cpp:81: undefined referenc
e to __imp_zmq_strerror'
__imp_zmq_strerror'
e:\Users\mmarques\Desktop\zeromq-4.0.5\perf/local_lat.cpp:59: undefined referenc
e to
e:\Users\mmarques\Desktop\zeromq-4.0.5\perf/local_lat.cpp:65: undefined referenc
e to __imp_zmq_strerror'
__imp_zmq_strerror'
e:\Users\mmarques\Desktop\zeromq-4.0.5\perf/local_lat.cpp:96: undefined referenc
e to
local_lat.o:e:\Users\mmarques\Desktop\zeromq-4.0.5\perf/local_lat.cpp:88: more u
ndefined references to __imp_zmq_strerror' follow
/e/Users/mmarques/Desktop/zeromq-4.0.5/perf'
collect2.exe: error: ld returned 1 exit status
make[1]: *** [local_lat.exe] Error 1
make[1]: Leaving directory
make: *** [all-recursive] Error 1
What I've done was download Zmq Sources and perform a
> sh configure
> make
Can anyone help me figure out how to solve this, and setup up a Zmq Go Binding on Windows environment?
答案1
得分: 1
确保您已安装MinGW gcc工具链。Go需要它才能从Go代码中调用C代码,而zmq4正在这样做。如果您查看zmq4存储库,您可以看到.h头文件。请参阅:https://golang.org/doc/install和https://golang.org/cmd/cgo/。
英文:
Make sure that you have the MinGW gcc toolchain installed. Go needs it to be able to call C code from Go code which zmq4 is doing. If you check out the zmq4 repo you can see the .h header file. See: https://golang.org/doc/install and https://golang.org/cmd/cgo/.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论