2017-01-27 4 views
0

Я скомпилировал и установил версию libxml версии 2.2.7.2. Во время компиляции у меня есть эта ошибка: Makefile: 755: не удалось создать рецепт для установки «install-data-local». Но файлы lib правильно сгенерированы (libxml2.a и libxml2.so). Я хотел бы использовать libxml2 в проекте C, поэтому я редактировал свои make-файлы, чтобы интегрировать файлы lib (libxml2.a и libxml2.so). Проблема заключается в том, что когда я составляю мой проект я получаю следующее ошибки: /libxml2.a(xmlIO.o): В функции xmlGzfileRead': undefined reference to gzdopen « /libxml2.a(xmlIO.o): В функции xmlGzfileRead': undefined reference to gzclose» /libxml2.a (xmlIO.o): В функции xmlGzfileRead': undefined reference to gzread ' ... и т. д. Кажется, что я должен установить библиотеку zlib для устранения этих ошибок компоновщика. Я установил библиотеку zlib и отредактировал LD_LIBRARY_PATH, чтобы добавить путь, где находятся библиотеки zlib. Я перекомпилировал свой проект, но у меня все еще есть те же ошибки компоновщика.undefined ссылка на gzdopen, gzclose, gzread

Не могли бы вы помочь мне решить эти ошибки компоновщика.

С уважением.

ответ

0

Смотрите libxml2 FAQ:

Troubles compiling or linking programs using libxml2

Usually the problem comes from the fact that the compiler doesn't get the right compilation or linking flags. There is a small shell script xml2-config which is installed as part of libxml2 usual install process which provides those flags. Use

xml2-config --cflags 

to get the compilation flags and

xml2-config --libs 

to get the linker flags. Usually this is done directly from the Makefile as:

CFLAGS=`xml2-config --cflags` 

LIBS=`xml2-config --libs` 

На моей нынешней системе, выход из xml2-config --libs является

-lxml2 -lz -lpthread -licucore -lm 
+0

привет, я открыл файл xml2_config, префикс/главная/ЛИЭС/libxml2, и это репозиторий, в котором генерируются мои файлы lib. Но когда я выполняю команду xml2-config --cflags, я получаю -I/usr/include/libxml2 вместо -I/home/libs/libxml2, это нормально? Кроме того, когда я выполняю команду xml2-config -libs, я получаю только -lxml2. Что не так? – ZINEBA

+0

@ ZINEBA Вы уверены, что не выполняете общесистемную версию 'xml2-config' (обычно в'/usr/bin')? Если ваш префикс '/ home/libs/libxml2', вам нужно запустить'/home/libs/libxml2/bin/xml2-config'. Кроме того, версия 2.7.2 старше восьми лет. Попробуйте новую версию или добавьте '-lz' вручную. – nwellnhof

+0

привет. Да, вы правы, когда я устанавливаю команду xml2-config -libs без указания ссылки на файл, по умолчанию система выполняет файл/usr/bin/linxml2-config, но прямо сейчас я указываю ссылку на отверстие/home/libs/libxml2/bin/xml2-config --cflags, и я получаю rignt repo: -I/home/libs/libxml2/include/libxml2 У меня установлена ​​более новая версия libxml2 (версия 2.9.3), теперь xml2-config --libs дает -lxm2 -lz -lm -ldl. Я скомпилировал свой исходный код. Я получаю всегда те же ошибки, что и выше, и получаю, кроме того, следующую ошибку: неопределенная ссылка на 'lzma_code '' lzma_properties_decode' ... – ZINEBA