Недавно начал осваивать QT под Linux. Возник небольшой вопрос...
У меня есть скомпилированная статическая библиотека. Библиотека содержит в себе необходимый функционал для работы с gconf. Консольные приложения скопилированные в Netbeans с использованием указанной библиотеки успешно запускаются и отрабатывают, если в настройках проекта прописан путь к библиотекам *.so и указаны названия библиотек.
Необходимо использовать данную статическую библиотеку в проекте выполненом на QTCreator. Я добавил в файл test.pro строчки:
LIBS += /home/xray/LibraryLoader/liblibraryloader.a -ldl \
/usr/lib/libgconf2-4/2/libgconfbackend-evoldap.so \
/usr/lib/libgconf2-4/2/libgconfbackend-oldxml.so \
/usr/lib/libgconf2-4/2/libgconfbackend-xml.so
Помимо этого, добавил в настройках проекта переменную LD_LIBRARY_PATH=/usr/lib/libgconf2-4/2/ . Без этого действия при запуске программы в отладчике появлялось сообщение
/home/xray/testLibs-build-desktop/testLibs: error while loading shared libraries: libgconfbackend-evoldap.so: cannot open shared object file: No such file or directory
Теперь, запуская debug, программа начинает работать, но останавливается на строчке в статической библиотеке liblibraryloader.a. Строчка: g_type_init(); // инициализация api gconf Похоже, что таки не удалось получить тело функции g_type_init() из указанных *.so. В консоли следующий вывод:
Starting /home/xray/testLibs-build-desktop/testLibs...
*** glibc detected *** /home/xray/testLibs-build-desktop/testLibs: malloc(): memory corruption: 0x09ab7900 ***
======= Backtrace: =========
/lib/libc.so.6(+0x6c501)[0x903501]
/lib/libc.so.6(+0x6f2fc)[0x9062fc]
...
...
b76fe000-b7705000 r--s 00000000 08:07 6393 /usr/lib/gconv/gconv-modules.cache
b7705000-b7706000 r--p 002a1000 08:07 7283 /usr/lib/locale/locale-archive
b7706000-b7708000 rw-p 00000000 00:00 0
bf7fc000-bf81d000 rw-p 00000000 00:00 0 [stack]
The program has unexpectedly finished.
/home/xray/testLibs-build-desktop/testLibs exited with code 0
Буду признателен любым полезным советам.