Библиотека Rabbitmq-c не связана динамически в Debian 8

Цель: сделать Rabbitmq-c динамически связанным через gcc ( https://github.com/alanxz/rabbitmq-c).

Проект называется кладовщик:

#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, что меня очень смущает... Буду очень признателен за любую помощь.

1 ответ

Мне кажется, что проблема в том, что в файле /etc/ld.so.conf.d/rabbitmq.conf отсутствует подкаталог... / lib /... в своем содержимом. Когда я обновляю содержимое этого файла, оно работает для меня (находит общую библиотеку rabbitmq):

/usr/local/lib/x86_64-linux-gnu 

Обратите внимание, запустить sudo ldconfig после сохранения изменений.

Похоже, это ошибка установки rabbitmq git - я клонировал и собирал из master master 22 февраля 2018 года на Ubu-17.

Другие вопросы по тегам