ARM交叉编译的ZeroMQ zstr_rcv()给出分段错误

ARM交叉编译的ZeroMQ zstr_rcv()给出分段错误,c,linux,segmentation-fault,pipe,zeromq,C,Linux,Segmentation Fault,Pipe,Zeromq,我为armpokylinux交叉编译了zmq和czmq,以构建一个PUB-SUB消息路由器。在程序中,我使用zthread_fork分叉一个附加的线程,并通过管道进行对话。当我在分叉之后从main执行zstr_rcv时,我得到一个分段错误。这段代码在我的带有GCC的Ubuntu盒中运行良好。我做错了什么?还是一个ARM兼容性问题 下面是一个简单的代码片段 //侦听器线程函数。 静态void侦听器\u线程void*args、zctx\u t*ctx、void*管道 { //将同步消息发送到主服务器

我为armpokylinux交叉编译了zmq和czmq,以构建一个PUB-SUB消息路由器。在程序中,我使用zthread_fork分叉一个附加的线程,并通过管道进行对话。当我在分叉之后从main执行zstr_rcv时,我得到一个分段错误。这段代码在我的带有GCC的Ubuntu盒中运行良好。我做错了什么?还是一个ARM兼容性问题

下面是一个简单的代码片段

//侦听器线程函数。 静态void侦听器\u线程void*args、zctx\u t*ctx、void*管道 { //将同步消息发送到主服务器。 zstr_发送管道,准备就绪; //干活儿。 而1 { 睡眠1; } } //main分叉侦听器线程并等待来自带有zstr_rcv的侦听器的同步消息。 int main int argc,字符**argv { //创建ZeroMQ上下文。 zctx_t*上下文=zctx_新; 断言上下文; //部署listner。 void*listener=zthread\u fork上下文,listener\u线程,NULL; 断言听者; //等待同步信号。 char*string=zstr_recv侦听器; zstr_free&string; //在这里做事。 而1 { 睡眠1; } 返回0; } 发件人:


注意建议如何使用zstr_free而不是free。你可能只是侥幸逃脱了Ubuntu桌面上的不良行为。尝试建议的释放方法,看看是否效果更好这只是库版本不匹配的一个例子。我使用了libzmq.so.4,而不是czmq所需的libzmq.so.3。一旦使用了正确的版本,一切都很好


更光明的是,希望其他人能从中学习。为造成的混乱道歉

谢谢你的快速回复。是的,我的错在那里,但这不是原因。我把它改为使用zstr_free,但仍然存在分割错误。根据我下面的回答,这是我的大脑放屁。抱歉给你添麻烦了。
//  Receive C string from socket. Caller must free returned string using
//  zstr_free(). Returns NULL if the context is being terminated or the
//  process was interrupted.
CZMQ_EXPORT char *
    zstr_recv (void *source);