Неопределенный символ tbb внутренний Выделить при загрузке общей библиотеки

у некоторых людей, использующих мою общую библиотеку, возникают проблемы с ее загрузкой. Я уже сказал им установить «gcc-libs», как указано здесь .

Я также сказал им скомпилировать разделяемую библиотеку самостоятельно, но безуспешно.

Есть ли другие решения этой проблемы?

Это файл журнала из программы, которая пытается загрузить плагин на CentOS6:

[23:16:57]   Failed (plugins/RouteConnectorPlugin.so: undefined symbol: _ZN3tbb8internal12NFS_AllocateEjjPv)
[23:16:57]  Loading plugin failed: RouteConnectorPlugin.so

Программа имеет открытый исходный код и находится здесь. Она написана на смеси C и C++ ( программа скомпилирована только для x86).


person Community    schedule 15.12.2012    source источник
comment
@KillianDS, вы имеете в виду \libs\ из .tgz? И я сказал им установить GCC-libs, но, похоже, это не решает проблему :)   -  person    schedule 15.12.2012


Ответы (1)


Если ваша общая библиотека зависит от другой общей библиотеки, вы должны связать ее. Затем, когда ваша библиотека связана с какой-либо другой исполняемой/разделяемой библиотекой, эта зависимость будет автоматически загружена, и пользователям не нужно явно связываться с этой зависимостью.

Неопределенный символ

$ c++filt _ZN3tbb8internal12NFS_AllocateEjjPv
tbb::internal::NFS_Allocate(unsigned int, unsigned int, void*)

который может исходить из упомянутой вами библиотеки intel-tbb. Поскольку это зависимость вашего кода, пользователи ожидают, что вы правильно объявите эту зависимость, связав ее с вашей библиотекой.

См., например. этот ответ о том, как это сделать с с ГЦК.

person Benjamin Bannier    schedule 15.12.2012