Использование 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.
Получить источники:
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/
Сборка и установка:
./configure make sudo make install
Проверьте, работает ли это:
cd examples/ make clean make encode_decode_test ./encode_decode_test
Если все в порядке, у вас должен быть исполняемый файл "encode_decode_test". Это пример использует xdelta3. Теперь вы можете построить свою программу таким же образом. Посмотрите файл "Makefile" внутри каталога "examples", чтобы понять, как собрать свою программу. Обратите внимание, что сейчас нет задействованных библиотек.