ubuntu下安装rabbitmq-c-master

博客源地址:http://blog.csdn.net/leekwen/article/details/25868859?utm_source=tuicool&utm_medium=referral

目录(?)[+]
概述:

目的是在ubuntu 12.04.04桌面版上运行rabbitmq-c的客户端程序。
操作步骤:
1、下载源码:RabbitMQ的-C

RabbitMQ的Ç客户端已经搬迁到了链接地址https://github.com/alanxz/rabbitmq-c

[plain] view plain copy
在CODE上查看代码片派生到我的代码片

    leekwen@leekwen:~$ git clone https://github.com/alanxz/rabbitmq-c  
        Initialized empty Git repository in /home/leekwen/rabbitmq-c/.git/  
        remote: Counting objects: 4336, done.  
        remote: Compressing objects: 100% (1778/1778), done.  
        remote: Total 4336 (delta 2521), reused 4328 (delta 2515)  
        Receiving objects: 100% (4336/4336), 2.25 MiB | 85 KiB/s, done.  
        Resolving deltas: 100% (2521/2521), done.  

2、这里我就直接进入编译主题了 (建议大家最好还是先要看下README.md)

[plain] view plain copy
在CODE上查看代码片派生到我的代码片
““
leekwen@leekwen:~cd rabbitmq-c; mkdir build && cd build  
    leekwen@leekwen:~/rabbitmq-c/build
cmake .. //编译即可

编译中可能出现的问题:

问题1、没有安装cmake工具

运行如下命令:

[html] view plain copy
在CODE上查看代码片派生到我的代码片
leekwen@leekwen:~/rabbitmq-c/build$ sudo apt-get install cmake  
问题2、没有编译环境所依赖的工具

会出现如下的error信息:

[plain] view plain copy
在CODE上查看代码片派生到我的代码片
leekwen@leekwen:~/rabbitmq-c/build$ cmake ..  
-- The C compiler identification is GNU  
-- Check for working C compiler: /usr/bin/gcc  
-- Check for working C compiler: /usr/bin/gcc -- works  
-- Detecting C compiler ABI info  
-- Detecting C compiler ABI info - done  
-- CMAKE_BUILD_TYPE not specified. Creating Release build  
-- Found C inline keyword: inline  
-- Looking for getaddrinfo  
-- Looking for getaddrinfo - found  
-- Looking for socket  
-- Looking for socket - found  
-- Looking for htonll  
-- Looking for htonll - not found  
-- Looking for clock_gettime in rt  
-- Looking for clock_gettime in rt - found  
-- Could NOT find POPT (missing:  POPT_INCLUDE_DIR POPT_LIBRARY)  
-- Found XMLTO: /usr/bin/xmlto  
-- Found Doxygen: /usr/bin/doxygen  
-- Looking for include files CMAKE_HAVE_PTHREAD_H  
-- Looking for include files CMAKE_HAVE_PTHREAD_H - found  
-- Looking for pthread_create in pthreads  
-- Looking for pthread_create in pthreads - not found  
-- Looking for pthread_create in pthread  
-- Looking for pthread_create in pthread - found  
-- Found Threads: TRUE  
CMake Error at /usr/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:91 (MESSAGE):  
  Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the  
  system variable OPENSSL_ROOT_DIR (missing: OPENSSL_LIBRARIES  
  OPENSSL_INCLUDE_DIR) (Required is at least version "0.9.8")  
Call Stack (most recent call first):  
  /usr/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:252 (_FPHSA_FAILURE_MESSAGE)  
  /usr/share/cmake-2.8/Modules/FindOpenSSL.cmake:244 (find_package_handle_standard_args)  
  CMakeLists.txt:240 (find_package)  


-- Configuring incomplete, errors occurred!  

运行如下命令解决:

[plain] view plain copy
在CODE上查看代码片派生到我的代码片
leekwen@leekwen:~/rabbitmq-c/build$ sudo apt-get install -y xmlto doxygen  
其它:

假如再次出现有关没有安装OPENSSL_LIBRARIES库的问题,错误如下:

[plain] view plain copy
在CODE上查看代码片派生到我的代码片
leekwen@leekwen:~/rabbitmq-c/build$ cmake ..  
-- Could NOT find POPT (missing:  POPT_INCLUDE_DIR POPT_LIBRARY)  
-- Found XMLTO: /usr/bin/xmlto  
-- Found Doxygen: /usr/bin/doxygen  
-- checking for module 'openssl'  
--   package 'openssl' not found  
CMake Error at /usr/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:91 (MESSAGE):  
  Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the  
  system variable OPENSSL_ROOT_DIR (missing: OPENSSL_LIBRARIES  
  OPENSSL_INCLUDE_DIR) (Required is at least version "0.9.8")  
Call Stack (most recent call first):  
  /usr/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:252 (_FPHSA_FAILURE_MESSAGE)  
  /usr/share/cmake-2.8/Modules/FindOpenSSL.cmake:244 (find_package_handle_standard_args)  
  CMakeLists.txt:240 (find_package)  


-- Configuring incomplete, errors occurred!  

运行如下的命令即可:

[plain] view plain copy
在CODE上查看代码片派生到我的代码片

leekwen@leekwen:~/rabbitmq-c/build$ sudo apt-get install -y openssl-devel  
或  
leekwen@leekwen:~/rabbitmq-c/build$ sudo apt-get install -y openssl libssl-dev  
正确的编译过程如下:

[plain] view plain copy
在CODE上查看代码片派生到我的代码片
leekwen@leekwen:~/rabbitmq-c/build$ cmake ..  
-- Could NOT find POPT (missing:  POPT_INCLUDE_DIR POPT_LIBRARY)  
-- checking for module 'openssl'  
--   found openssl, version 1.0.1  
-- Found OpenSSL: /usr/lib/i386-linux-gnu/libssl.so;/usr/lib/i386-linux-gnu/libcrypto.so (found suitable version "1..1", required is "0.9.8")  
-- Building rabbitmq as a shared library - yes  
-- Building rabbitmq as a static library - no  
-- Configuring done  
-- Generating done  
-- Build files have been written to: /home/leekwen/rabbitmq-c/build  
[plain] view plain copy
在CODE上查看代码片派生到我的代码片
leekwen@leekwen:~/rabbitmq-c/build$ make  
Scanning dependencies of target rabbitmq  
[  1%] Building C object librabbitmq/CMakeFiles/rabbitmq.dir/amqp_framing.c.o  
[  2%] Building C object librabbitmq/CMakeFiles/rabbitmq.dir/amqp_api.c.o  
[  4%] Building C object librabbitmq/CMakeFiles/rabbitmq.dir/amqp_connection.c.o  
[  5%] Building C object librabbitmq/CMakeFiles/rabbitmq.dir/amqp_mem.c.o  
[  7%] Building C object librabbitmq/CMakeFiles/rabbitmq.dir/amqp_socket.c.o  
[  8%] Building C object librabbitmq/CMakeFiles/rabbitmq.dir/amqp_table.c.o  
[ 10%] Building C object librabbitmq/CMakeFiles/rabbitmq.dir/amqp_url.c.o  
[ 11%] Building C object librabbitmq/CMakeFiles/rabbitmq.dir/amqp_tcp_socket.c.o  
[ 12%] Building C object librabbitmq/CMakeFiles/rabbitmq.dir/amqp_timer.c.o  
[ 14%] Building C object librabbitmq/CMakeFiles/rabbitmq.dir/amqp_consumer.c.o  
[ 15%] Building C object librabbitmq/CMakeFiles/rabbitmq.dir/amqp_openssl.c.o  
Linking C shared library librabbitmq.so  
[ 15%] Built target rabbitmq  
Scanning dependencies of target amqp_bind  
[ 17%] Building C object examples/CMakeFiles/amqp_bind.dir/amqp_bind.c.o  
[ 18%] Building C object examples/CMakeFiles/amqp_bind.dir/utils.c.o  
[ 20%] Building C object examples/CMakeFiles/amqp_bind.dir/unix/platform_utils.c.o  
Linking C executable amqp_bind  
[ 20%] Built target amqp_bind  
Scanning dependencies of target amqp_connect_timeout  
[ 21%] Building C object examples/CMakeFiles/amqp_connect_timeout.dir/amqp_connect_timeout.c.o  
[ 22%] Building C object examples/CMakeFiles/amqp_connect_timeout.dir/utils.c.o  
[ 24%] Building C object examples/CMakeFiles/amqp_connect_timeout.dir/unix/platform_utils.c.o  
Linking C executable amqp_connect_timeout  
[ 24%] Built target amqp_connect_timeout  
Scanning dependencies of target amqp_consumer  
[ 25%] Building C object examples/CMakeFiles/amqp_consumer.dir/amqp_consumer.c.o  
[ 27%] Building C object examples/CMakeFiles/amqp_consumer.dir/utils.c.o  
[ 28%] Building C object examples/CMakeFiles/amqp_consumer.dir/unix/platform_utils.c.o  
Linking C executable amqp_consumer  
[ 28%] Built target amqp_consumer  
Scanning dependencies of target amqp_exchange_declare  
[ 30%] Building C object examples/CMakeFiles/amqp_exchange_declare.dir/amqp_exchange_declare.c.o  
[ 31%] Building C object examples/CMakeFiles/amqp_exchange_declare.dir/utils.c.o  
[ 32%] Building C object examples/CMakeFiles/amqp_exchange_declare.dir/unix/platform_utils.c.o  
Linking C executable amqp_exchange_declare  
[ 32%] Built target amqp_exchange_declare  
Scanning dependencies of target amqp_listen  
[ 34%] Building C object examples/CMakeFiles/amqp_listen.dir/amqp_listen.c.o  
[ 35%] Building C object examples/CMakeFiles/amqp_listen.dir/utils.c.o  
[ 37%] Building C object examples/CMakeFiles/amqp_listen.dir/unix/platform_utils.c.o  
Linking C executable amqp_listen  
[ 37%] Built target amqp_listen  
Scanning dependencies of target amqp_listenq  
[ 38%] Building C object examples/CMakeFiles/amqp_listenq.dir/amqp_listenq.c.o  
[ 40%] Building C object examples/CMakeFiles/amqp_listenq.dir/utils.c.o  
[ 41%] Building C object examples/CMakeFiles/amqp_listenq.dir/unix/platform_utils.c.o  
Linking C executable amqp_listenq  
[ 41%] Built target amqp_listenq  
Scanning dependencies of target amqp_producer  
[ 42%] Building C object examples/CMakeFiles/amqp_producer.dir/amqp_producer.c.o  
[ 44%] Building C object examples/CMakeFiles/amqp_producer.dir/utils.c.o  
[ 45%] Building C object examples/CMakeFiles/amqp_producer.dir/unix/platform_utils.c.o  
Linking C executable amqp_producer  
[ 45%] Built target amqp_producer  
Scanning dependencies of target amqp_rpc_sendstring_client  
[ 47%] Building C object examples/CMakeFiles/amqp_rpc_sendstring_client.dir/amqp_rpc_sendstring_client.c.o  
[ 48%] Building C object examples/CMakeFiles/amqp_rpc_sendstring_client.dir/utils.c.o  
[ 50%] Building C object examples/CMakeFiles/amqp_rpc_sendstring_client.dir/unix/platform_utils.c.o  
Linking C executable amqp_rpc_sendstring_client  
[ 50%] Built target amqp_rpc_sendstring_client  
Scanning dependencies of target amqp_sendstring  
[ 51%] Building C object examples/CMakeFiles/amqp_sendstring.dir/amqp_sendstring.c.o  
[ 52%] Building C object examples/CMakeFiles/amqp_sendstring.dir/utils.c.o  
[ 54%] Building C object examples/CMakeFiles/amqp_sendstring.dir/unix/platform_utils.c.o  
Linking C executable amqp_sendstring  
[ 54%] Built target amqp_sendstring  
Scanning dependencies of target amqp_unbind  
[ 55%] Building C object examples/CMakeFiles/amqp_unbind.dir/amqp_unbind.c.o  
[ 57%] Building C object examples/CMakeFiles/amqp_unbind.dir/utils.c.o  
[ 58%] Building C object examples/CMakeFiles/amqp_unbind.dir/unix/platform_utils.c.o  
Linking C executable amqp_unbind  
[ 58%] Built target amqp_unbind  
Scanning dependencies of target amqps_bind  
[ 60%] Building C object examples/CMakeFiles/amqps_bind.dir/amqps_bind.c.o  
[ 61%] Building C object examples/CMakeFiles/amqps_bind.dir/utils.c.o  
[ 62%] Building C object examples/CMakeFiles/amqps_bind.dir/unix/platform_utils.c.o  
Linking C executable amqps_bind  
[ 62%] Built target amqps_bind  
Scanning dependencies of target amqps_connect_timeout  
[ 64%] Building C object examples/CMakeFiles/amqps_connect_timeout.dir/amqps_connect_timeout.c.o  
[ 65%] Building C object examples/CMakeFiles/amqps_connect_timeout.dir/utils.c.o  
[ 67%] Building C object examples/CMakeFiles/amqps_connect_timeout.dir/unix/platform_utils.c.o  
Linking C executable amqps_connect_timeout  
[ 67%] Built target amqps_connect_timeout  
Scanning dependencies of target amqps_consumer  
[ 68%] Building C object examples/CMakeFiles/amqps_consumer.dir/amqps_consumer.c.o  
[ 70%] Building C object examples/CMakeFiles/amqps_consumer.dir/utils.c.o  
[ 71%] Building C object examples/CMakeFiles/amqps_consumer.dir/unix/platform_utils.c.o  
Linking C executable amqps_consumer  
[ 71%] Built target amqps_consumer  
Scanning dependencies of target amqps_exchange_declare  
[ 72%] Building C object examples/CMakeFiles/amqps_exchange_declare.dir/amqps_exchange_declare.c.o  
[ 74%] Building C object examples/CMakeFiles/amqps_exchange_declare.dir/utils.c.o  
[ 75%] Building C object examples/CMakeFiles/amqps_exchange_declare.dir/unix/platform_utils.c.o  
Linking C executable amqps_exchange_declare  
[ 75%] Built target amqps_exchange_declare  
Scanning dependencies of target amqps_listen  
[ 77%] Building C object examples/CMakeFiles/amqps_listen.dir/amqps_listen.c.o  
[ 78%] Building C object examples/CMakeFiles/amqps_listen.dir/utils.c.o  
[ 80%] Building C object examples/CMakeFiles/amqps_listen.dir/unix/platform_utils.c.o  
Linking C executable amqps_listen  
[ 80%] Built target amqps_listen  
Scanning dependencies of target amqps_listenq  
[ 81%] Building C object examples/CMakeFiles/amqps_listenq.dir/amqps_listenq.c.o  
[ 82%] Building C object examples/CMakeFiles/amqps_listenq.dir/utils.c.o  
[ 84%] Building C object examples/CMakeFiles/amqps_listenq.dir/unix/platform_utils.c.o  
Linking C executable amqps_listenq  
[ 84%] Built target amqps_listenq  
Scanning dependencies of target amqps_producer  
[ 85%] Building C object examples/CMakeFiles/amqps_producer.dir/amqps_producer.c.o  
[ 87%] Building C object examples/CMakeFiles/amqps_producer.dir/utils.c.o  
[ 88%] Building C object examples/CMakeFiles/amqps_producer.dir/unix/platform_utils.c.o  
Linking C executable amqps_producer  
[ 88%] Built target amqps_producer  
Scanning dependencies of target amqps_sendstring  
[ 90%] Building C object examples/CMakeFiles/amqps_sendstring.dir/amqps_sendstring.c.o  
[ 91%] Building C object examples/CMakeFiles/amqps_sendstring.dir/utils.c.o  
[ 92%] Building C object examples/CMakeFiles/amqps_sendstring.dir/unix/platform_utils.c.o  
Linking C executable amqps_sendstring  
[ 92%] Built target amqps_sendstring  
Scanning dependencies of target amqps_unbind  
[ 94%] Building C object examples/CMakeFiles/amqps_unbind.dir/amqps_unbind.c.o  
[ 95%] Building C object examples/CMakeFiles/amqps_unbind.dir/utils.c.o  
[ 97%] Building C object examples/CMakeFiles/amqps_unbind.dir/unix/platform_utils.c.o  
Linking C executable amqps_unbind  
[ 97%] Built target amqps_unbind  
Scanning dependencies of target test_parse_url  
[ 98%] Building C object tests/CMakeFiles/test_parse_url.dir/test_parse_url.c.o  
Linking C executable test_parse_url  
[ 98%] Built target test_parse_url  
Scanning dependencies of target test_tables  
[100%] Building C object tests/CMakeFiles/test_tables.dir/test_tables.c.o  
/home/leekwen/rabbitmq-c/tests/test_tables.c: In function ‘dump_value’:  
/home/leekwen/rabbitmq-c/tests/test_tables.c:108:5: warning: ISO C90 does not support the ‘ll’ gnu_printf length modifier [-Wformat]  
/home/leekwen/rabbitmq-c/tests/test_tables.c:147:5: warning: ISO C90 does not support the ‘ll’ gnu_printf length modifier [-Wformat]  
/home/leekwen/rabbitmq-c/tests/test_tables.c: In function ‘test_dump_value’:  
/home/leekwen/rabbitmq-c/tests/test_tables.c:201:3: warning: integer constant is too large for ‘long’ type [-Wlong-long]  
/home/leekwen/rabbitmq-c/tests/test_tables.c: In function ‘test_table_codec’:  
/home/leekwen/rabbitmq-c/tests/test_tables.c:307:3: warning: integer constant is too large for ‘long’ type [-Wlong-long]  
Linking C executable test_tables  
[100%] Built target test_tables  

“`

到此编译的环境已经完成了,Enjoy It…~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在CentOS操作系统上安装rabbitmq-c并使用,具体步骤如下: 1. 安装依赖项:在Linux终端中运行以下命令以安装rabbitmq-c的依赖项: ``` sudo yum install -y make cmake gcc gcc-c++ openssl-devel librabbitmq-devel ``` 2. 下载rabbitmq-c:从rabbitmq-c的官方网站(https://github.com/alanxz/rabbitmq-c)下载最新的源代码。 3. 构建rabbitmq-c:在rabbitmq-c的源代码目录中,运行以下命令以构建rabbitmq-c: ``` mkdir build && cd build cmake .. cmake --build . sudo cmake --build . --target install ``` 4. 在你的C代码中,使用以下头文件包含rabbitmq-c: ``` #include <rabbitmq-c/amqp.h> #include <rabbitmq-c/amqp_tcp_socket.h> ``` 5. 连接到RabbitMQ服务器:在你的C代码中,使用以下代码连接到RabbitMQ服务器: ``` amqp_socket_t *socket = amqp_tcp_socket_new(conn); if (!socket) { // 连接失败的处理 } int status = amqp_socket_open(socket, hostname, port); if (status != AMQP_STATUS_OK) { // 连接失败的处理 } amqp_connection_state_t conn = amqp_new_connection(); if (!conn) { // 连接失败的处理 } amqp_rpc_reply_t reply = amqp_login(conn, "/", 0, 131072, 0, AMQP_SASL_METHOD_PLAIN, username, password); if (reply.reply_type != AMQP_RESPONSE_NORMAL) { // 连接失败的处理 } ``` 6. 发送消息到队列:在你的C代码中,使用以下代码发送消息到队列: ``` amqp_basic_properties_t props; props._flags = AMQP_BASIC_CONTENT_TYPE_FLAG | AMQP_BASIC_DELIVERY_MODE_FLAG; props.content_type = amqp_cstring_bytes("text/plain"); props.delivery_mode = 2; // 持久化消息 amqp_bytes_t message_bytes = amqp_cstring_bytes("Hello, RabbitMQ!"); int status = amqp_basic_publish(conn, 1, amqp_cstring_bytes(exchange_name), amqp_cstring_bytes(routing_key), 0, 0, &props, message_bytes); if (status != AMQP_STATUS_OK) { // 发送失败的处理 } ``` 7. 接收消息:在你的C代码中,使用以下代码接收消息: ``` amqp_rpc_reply_t reply = amqp_basic_consume(conn, 1, amqp_cstring_bytes(queue_name), amqp_empty_bytes, 0, 1, 0, amqp_empty_table); if (reply.reply_type != AMQP_RESPONSE_NORMAL) { // 订阅失败的处理 } while (1) { amqp_envelope_t envelope; amqp_rpc_reply_t reply = amqp_consume_message(conn, &envelope, NULL, 0); if (reply.reply_type != AMQP_RESPONSE_NORMAL) { // 接收失败的处理 } // 在这里处理接收到的消息 amqp_destroy_envelope(&envelope); } ``` 以上就是在CentOS操作系统上安装rabbitmq-c并使用的步骤。希望对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值