Использование xdelta: заголовочный файл не найден. C++

Я пытаюсь сохранить историю файлов на сервере от клиента, и я подумал об использовании xdelta для этого. В Интернете почти нет помощи по использованию xdelta. Я собрал несколько кусочков кода и попытался запустить его, чтобы понять сам, но компилятор выдает следующую ошибку:

fatal error: xdelta3.h: No such file or directory

Я установил xdelta3, используя apt-get, а также загрузив.tar с сайта.

Вот заголовочные файлы, которые я включил:

#include <xdelta3.h>
#include <xdelta3-main.h>

Любые идеи относительно того, что заголовочные файлы для xdelta? Буду признателен, если вы также предоставите некоторые ссылки для обучения использованию xdelta, так как для меня недостаточно документации.

1 ответ

Прежде всего, убедитесь, что у вас есть -dev пакет также установлен. На моей системе Debian я сделал:

$ sudo apt-get install libxdelta2-dev

Теперь вы должны быть в состоянии использовать эти xdelta заголовки. Но они могут иметь другое наименование, чем вы используете. Вы можете проверить это так:

$ dpkg -L libxdelta2-dev | grep include

Для меня показывает:

/usr/include/edsio_edsio.h
/usr/include/edsio.h
/usr/include/xd_edsio.h
/usr/include/xdelta.h

Итак, вы можете видеть, что в этом случае я должен использовать xdelta.h заголовок, нет xdelta3.h, Попробуйте то же самое dpkg -L команда с вашим -dev пакет.

Если у вас другая версия xdelta*-dev пакет, проверьте вывод этой команды:

pkg-config --list-all | grep delta

Для меня вывод пуст, но если у вас есть что-то вроде libxdelta в выходных данных обязательно скомпилируйте ваше приложение с этими параметрами:

$ gcc $(pkg-config --cflags --libs libxdelta) main.c

ОБНОВЛЕНИЕ 1

Что касается вопроса о ссылках у вас есть. Я предполагаю, что вы используете gcc, поэтому он автоматически использует правильный компоновщик для вас. Дело в том, что вы должны указать имя библиотеки, с которой вы хотите связать свою программу, в качестве опции компоновщика.

Сначала вы должны выяснить ваше реальное имя библиотеки:

$ ls -1 /usr/lib | grep xdelta | grep so

Вы увидите что-то вроде этого:

libxdelta.so
libxdelta.so.2
libxdelta.so.2.0.0

Теперь вы знаете имя вашей библиотеки: это часть имени файла библиотеки между lib и .so, в данном случае имя библиотеки - xdelta.

Теперь вы можете связать свою программу с ним, используя -l опция:

$ gcc -lxdelta main.c

Вам также может понадобиться указать путь к библиотеке xdelta, если она не является стандартной (например, /usr/lib/):

$ gcc -L/your/path/to/xdelta/ -lxdelta main.c

ОБНОВЛЕНИЕ 2

Как собрать и использовать xdelta3.

  1. Получить источники:

    cd /tmp
    wget https://xdelta.googlecode.com/files/xdelta3-3.0.8.tar.xz
    tar xJvf xdelta3-3.0.8.tar.xz 
    cd xdelta3-3.0.8/
    
  2. Сборка и установка:

    ./configure
    make
    sudo make install
    
  3. Проверьте, работает ли это:

    cd examples/
    make clean
    make encode_decode_test
    ./encode_decode_test
    

Если все в порядке, у вас должен быть исполняемый файл "encode_decode_test". Это пример использует xdelta3. Теперь вы можете построить свою программу таким же образом. Посмотрите файл "Makefile" внутри каталога "examples", чтобы понять, как собрать свою программу. Обратите внимание, что сейчас нет задействованных библиотек.

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