2013-08-29 1 views
1

У меня есть binary1, время компиляции связано с другой library1.so Чтобы добавить некоторые функции, я создал library2.so, который использует libas_sdk.so.Ссылка на библиотеку, которая время компиляции связана с другой библиотекой

Функциональность в library2.so работает только в том случае, если dlopen (libas_sdk.so) является успешным, иначе он нормально возвращается и выполняет другую работу.

Теперь library1.so необходимо использовать library2.so при необходимости и использовать новую функциональность.

Я пробовал несколько вариантов компиляции и ссылок, но получал ldd или нерешенные символы.

Просьба предложить.

+2

Пожалуйста, сообщите об ошибке msg, когда вы это нашли. Это поможет другим помочь вам выявить проблему. – ZijingWu

+0

«Скомпилировать время связанное» - я думаю, что это связано во время связи. ;) Кроме того, формулировка несколько сбивает с толку, по крайней мере, для меня. – thokra

+2

Будьте в курсе того, что вы пробовали в терминах «множественных компиляции и ссылок». Я знаю, что эти вещи могут расстраивать, но этот пост читается немного, как будто вы отказались и теперь просто хотите, чтобы скулить. – delicateLatticeworkFever

ответ

0

dlopen() возвращает успех, если Lib уже связаны.

Поскольку library1.so должен использовать library2.so, вы должны связать их обоих binary1. (-llibrary1 -llibrary2)

С вашего вопроса кажется, что библиотеки2.so ссылки в libas_sdk.so runtime. Это происходит, вероятно, когда вы вызываете его некоторые init_library2() или некоторые функции с некоторыми данными конфигурации.

Я думаю, что проблема связана не с вашей ссылкой, а с вашим двоичным кодом1. Эта инициализация библиотеки2 (или library1) - это то, что вы делаете слишком рано или слишком поздно. ИМХО ваш двоичный файл1 должен быть связан с простой -llibrary1 -llibrary2.

Смежные вопросы