Я новичок в автоинструментах; Я делаю приложение, которое необходимо проанализировать 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-файлы и компилирую, просто выполняя следующие команды в корневом каталоге проекта:
Компиляция выглядит хорошо, и ссылки тоже выглядят хорошо:
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
Что я делаю не так?
Заранее спасибо.
Так как вы используете общую библиотеку libxerces-c-3.1.so
должен быть где-то, где он может быть найден ld
, В предыдущем случае, когда вы установили xerces-c
пакет, libxerces был установлен в /usr/lib
или где-нибудь, где это может быть найдено. Вы, вероятно, можете заставить его работать сейчас:
LD_LIBRARY_PATH=$PATH:/home/xxxx/workspace/P3/src/lib ./src/app
но это то, что вам в конечном итоге придется выяснить для установки пакета.
Других решений пока нет …