7

我真的很想将 0MQ 用于个人项目,但我很难在安装后编译东西

这是我所做的:

#### 安装先决条件没有错误:####
$ sudo apt-get install libtool autoconf automake uuid-dev build-essential

#### 获取 0MQ:####
$ cd ~/下载
$ wget http://download.zeromq.org/zeromq-3.2.1-rc2.tar.gz
$ tar -xvzf zeromq-3.2.1-rc2.tar.gz

#### 安装 0MQ 没有错误:####
$ cd zeromq-3.2.1
$ ./配置
$ 制作
$ sudo 安装
$ sudo ldconfig

#### 获取 imatix zguide:####
$ cd ~/下载
$ wget https://github.com/imatix/zguide/tarball/master
$ tar -xvzf 大师

这是我需要帮助的地方。在 imatix 的“examples/C”和“examples/C++”文件夹中运行“./build all”只会导致大量错误。我还尝试分别在“/examples/C/”和“/examples/C++/”目录中使用“./c”和“./c -p”命令进行编译。我没有收到错误,但它们会生成“.o”和“.opp”文件。这些是可执行文件吗?编译后我尝试了“chmod +x”和“chown 777”无济于事。这是我所做的:

#### 生成 hwclient.o ####
$ cd imatix-zguide-a690f10/
$ cd 示例/C/
$ ./c hwclient.c
正在编译 hwclient...
$ ./hwclient.o
bash:./hwclient.o:权限被拒绝

#### 生成 hwclient.opp ###
$ cd ../C++/
$ ./c -p hwclient.cpp
正在编译 hwclient...
$ ./hwclient.opp
bash:./hwclient.opp:权限被拒绝

我还尝试使用 g++ 进行编译,这只会导致与运行“./build all”类似的错误:

$ g++ hwclient.cpp -o hwclient.exe
/tmp/ccWFyLHw.o:在函数“主”中:
hwclient.c:(.text+0x16): 未定义对“zmq_ctx_new”的引用
hwclient.c:(.text+0x3a): 未定义对“zmq_socket”的引用
hwclient.c:(.text+0x52): 对“zmq_connect”的未定义引用
hwclient.c:(.text+0x73): 对“zmq_msg_init_size”的未定义引用
hwclient.c:(.text+0x7f): 对“zmq_msg_data”的未定义引用
hwclient.c:(.text+0xb9): 未定义对“zmq_msg_send”的引用
hwclient.c:(.text+0xc5): 未定义对“zmq_msg_close”的引用
hwclient.c:(.text+0xd1): 对“zmq_msg_init”的未定义引用
hwclient.c:(.text+0xed): 对“zmq_msg_recv”的未定义引用
hwclient.c:(.text+0x10d): 未定义对“zmq_msg_close”的引用
hwclient.c:(.text+0x12e): 对“zmq_close”的未定义引用
hwclient.c:(.text+0x13a): 未定义对“zmq_ctx_destroy”的引用
collect2: ld 返回 1 个退出状态

下一步是什么/我错过了什么?我查看了整个 0MQ 站点和 wiki,但似乎没有其他人有问题。我犯了一个菜鸟错误吗?我是否错误地执行了“.o”或“.opp”文件?它们甚至是可执行文件吗?

请帮忙。我真的很想用0MQ!

4

2 回答 2

8

我发现我必须升级到 ZeroMQ 3.2.x 才能让示例正确编译。CentOS/EPEL 软件库中的当前版本是 2.1.9,它不适用于 zguide 中的示例。我这里的例子是在 CentOS 6.3 服务器上完成的。

yum remove zeromq zeromq-devel
wget http://download.zeromq.org/zeromq-3.2.2.tar.gz
tar zxvf zeromq-3.2.2.tar.gz && cd zeromq-3.2.2
./configure
make && make install
cd ~/zguide/examples/C
gcc -o hwclient hwclient.c -lzmq
于 2012-12-12T05:09:59.030 回答
6

在讨论了几个 IRC 频道后,我想通了。

#### 使用以下命令构建单个文件:####
./c -p 文件名.cpp
g++ -o 文件名 文件名.opp -lzmq

#### 在文件夹中构建所有内容####
CCLIBS='-lzmq' ./build all
于 2012-10-16T15:52:34.183 回答