目标:通过 gcc ( https://github.com/alanxz/rabbitmq-c )使 Rabbitmq-c 动态链接。
项目称为storeman:
#include <stdarg.h>
#include <ctype.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <stdint.h>
#include <amqp_tcp_socket.h>
#include <amqp.h>
#include <amqp_framing.h>
#include <assert.h>
#include <time.h>
#include <sys/time.h>
#include <unistd.h>
int main(int argc, char const *const *argv)
{
amqp_connection_state_t conn;
conn=amqp_new_connection();
exit(0); //Everything else is deleted for testing
}
1.下载、编译、安装库。
build
在rabbitmq-c 下载路径内的新文件夹中:
制作..
cmake --build 。
cmake -DCMAKE_INSTALL_PREFIX=/usr/local ..
制作
进行安装
最后它执行以下成功输出:
[ 15%] Built target rabbitmq
...
[100%] Built target test_tables
Install the project...
-- Install configuration: "Release"
-- Up-to-date: /usr/local/lib/x86_64-linux-gnu/pkgconfig/librabbitmq.pc
-- Up-to-date: /usr/local/lib/x86_64-linux-gnu/librabbitmq.so.4.2.1
-- Up-to-date: /usr/local/lib/x86_64-linux-gnu/librabbitmq.so.4
-- Up-to-date: /usr/local/lib/x86_64-linux-gnu/librabbitmq.so
-- Up-to-date: /usr/local/lib/x86_64-linux-gnu/librabbitmq.a
-- Up-to-date: /usr/local/include/amqp.h
-- Up-to-date: /usr/local/include/amqp_framing.h
-- Up-to-date: /usr/local/include/amqp_tcp_socket.h
-- Up-to-date: /usr/local/include/amqp_ssl_socket.h
库文件安装到
/usr/local/lib/x86_64-linux-gnu/(librabbitmq.so和librabbitmq.so.4指向librabbitmq.so.4.2.1的链接,还有librabbitmq.a)
/usr/local/include/,所有需要的头文件都驻留在其中(amqp.h amqp_framing.h amqp_ssl_socket.h amqp_tcp_socket.h)
2. 使用 gcc。
gcc -Wall -I/usr/local/include -L/usr/local/lib/x86_64-linux-gnu -o storeman storeman.c -lrabbitmq
GCC 退出:
error while loading shared libraries: librabbitmq.so.4: cannot open shared object file: No such file or directory
同时它可能成功地被编译为静态,使用 librabbitmq.a,这让我很困惑......将非常感谢任何帮助。