LINUX.ORG.RU

Подключаемые библиотеки не могут работать с файлами — почему?

 , ,


0

1

Здравствуйте. Есть проект на C++ в Eclipse, который использует несколько библиотек. Библиотеки подключаются нормально, и функции вызываются. Библиотеки уже внутри работают с файлами, расположенными в директории /home/libs/extern Функции которые работают непосредственно с этими файлами не вызываются, выводится ошибка(gdb)

название цитаты

Program received signal SIGSEGV, Segmentation fault. 0xb7d68adc in vtable for __cxxabiv1::__class_type_info () from /usr/lib/i386-linux-gnu/libstdc++.so.6

Другие функции работаю нормально Есть предположение что библиотеки не могут попасть и работать с файлами расположенными в /home/libs/extern. У разработчика библиотеки все работает правильно. Вопрос - как настроить/подключить нормально папку /home/libs/extern чтобы эти функции заработали? Права на чтение и запись выставил, в $PATH добавил. К сожалению это не дало эффекта. Есть ли предположения напишите пожалуйста, в Linux работаю недавно, может быть что-то не так подключаю или делаю. В интернете описания подобной ошибки не нашел.



Последнее исправление: alab (всего исправлений: 1)

Ответ на: комментарий от staseg

Частично. Библиотеки поставленные были собраны компилятором GCC 4.8.5, я же работаю с 4.9.2. Это крайне важно чтобы и номера одинаковые? Просто по принципу обратной совместимости либки должны работать, если мой проект собран на компиляторе более поздней версии.

alab
() автор топика

Так проект на C++? Какую роль в нем играет эклипс? Как поставляются библиотеки - в виде исходников или в виде бинарников - и куда они подключаются?

Дело почти точно не в /home/libs/extern, а в самих библиотеках. Вернее в том, как они скомпанованы со своими зависимостями. Такое впечатление, что чатсь зависимостей прилинкована статически, а часть динамически, при этом они конфликтуют.

Да, и если те «файлы», которые лежат в /home/libs/extern - сами по себе библиотеки (плагины), то тогда, видимо, конфликт именно с ними при dlopen()

asaw ★★★★★
()
Ответ на: комментарий от alab

были собраны компилятором GCC 4.8.5, я же работаю с 4.9.2. Это крайне важно чтобы и номера одинаковые?

Да, это может быть крайне важно, тем более в 4.9 были изменения связанные с ABI.

asaw ★★★★★
()
Ответ на: комментарий от robot12

В include paths (-I) были добавлены папки на библиотеки. В линкере были добавлены пути к библиотекам, и их названия.

alab
() автор топика
Ответ на: комментарий от asaw

Да, на C++. Eclipse, согласен, никак не влияет, ибо все те параметры можно задать в каком-либо другом IDE, или напрямую вызывая g++. Файлы - текстовые, там лежит грубо говоря база данных в .XML и .JSON и прочие файлы. Либок там нет. Т.е. вариант с dlopen() отпадает? Возможно что-то с зависимостями, будем узнавать у поставщика.Спасибо. Но т.к. у поставщика все работало, то думал что дело именно в каких-то тонких настройках И по поводу компилятора - пытался собирать на 4.8.1, 4.8.3, на 4.6.2 и 4.9.2 - все также ошибка. 4.8.5 версию поставить не удалось.

alab
() автор топика
Ответ на: комментарий от alab

Нужно как-то поподробнее описать ошибку: распечатать стек вызова через gdb, через strace посмотреть какие там системные вызовы происходят перед падением.

asaw ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.