Включение и использование библиотек с автоинструментами

Я новичок в автоинструментах; Я делаю приложение, которое необходимо проанализировать XML-файлы, используя xerces-c 3.1.

Мой код работает нормально, когда я устанавливаю библиотеку xerces-c с помощью утилиты apt-get (тогда библиотеки xerces-c и включаемые файлы устанавливаются в / usr / lib и / usr / include / xercesc соответственно). В моем файле configure.ac у меня есть следующий макрос:

AC_CHECK_LIB([xerces-c],[main],[],[AC_MSG_ERROR([*** xerces-c lib not found])])

ОК, как я уже сказал, это работает, как ожидалось. Тем не менее, я хочу, чтобы библиотеки находились в каталоге проекта (для включения в дистрибутив), и здесь начинаются мои проблемы.

Я удаляю библиотеки xerces-c и копирую библиотеки xerces-c (загруженные с веб-страницы xerces-c) в каталог моего проекта. Затем я добавляю в свой confgure.ac макрос:

    LDFLAGS="$LDFLAGS -L/home/xxxx/workspace/P3/src/lib"

Наконец, я генерирую make-файлы и компилирую, просто выполняя следующие команды в корневом каталоге проекта:

  • Autoconf
  • Automake
  • ./ Configure
  • делать

Компиляция выглядит хорошо, и ссылки тоже выглядят хорошо:

g++  -g -O2  -L/home/xxxx/workspace/P3/src/lib -o app app-P3.o  -lxerces-c

Но когда я выполняю приложение, я получаю сообщение об ошибке:

./src/app: error while loading shared libraries: libxerces-c-3.1.so: cannot open shared object file: No such file or directory

Что я делаю не так?
Заранее спасибо.

0

Решение

Так как вы используете общую библиотеку libxerces-c-3.1.so должен быть где-то, где он может быть найден ld, В предыдущем случае, когда вы установили xerces-c пакет, libxerces был установлен в /usr/lib или где-нибудь, где это может быть найдено. Вы, вероятно, можете заставить его работать сейчас:

LD_LIBRARY_PATH=$PATH:/home/xxxx/workspace/P3/src/lib ./src/app

но это то, что вам в конечном итоге придется выяснить для установки пакета.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector