Статическая связь с Sunstudio
Я пытаюсь связать свою библиотеку ххх с библиотекой гггг. Я хочу связать статически, чтобы мне не нужно было упаковывать yyy вместе с xxx при доставке xxx. У меня есть две версии yyy, предоставленные третьей стороной: libyyy.so и libyyyln.a. Так что здесь я иду и связать с -lyyyln.
Я не получаю никакого сообщения об ошибке при ссылке. Зависимость от yyyln не появляется, когда я делаю "ldd libxxx.so". Но "ldd -r libxxx.so" показывает, что символы из yyy не разрешены. "nm libxxx.so" показывает, что эти символы из yyy являются UNDEF.
Что я пропустил тогда?
Edit1: мне удалось заставить его работать в конечном итоге с "-l /fullpath/libyyyln.a"
5 ответов
Вы хотите поставить -Bstatic
перед libs вы хотите статическую связь с. Для получения дополнительной информации покопайтесь в Руководстве по библиотекам и библиотекам Solaris.
Вы могли бы задать этот вопрос на форуме Sun Studio и получить ответы непосредственно от команды разработчиков Sun Studio.
Форумы Sun Studio (для C, C++, Fortran и инструментов)
Мне удалось заставить его работать в конечном итоге с "-l /fullpath/libyyyln.a"
Я играл с -Bstatic и -Bdynamic без успеха. Решение было действительно так же просто, как написано выше. Я должен был подумать об этом раньше.
Я полагаю, вы используете GCC. По умолчанию gcc будет использовать разделяемые библиотеки (.so), если это возможно, поэтому вы должны принудительно установить статическую связь с параметром -static.
Изменить: Извините, я думал, что Sunstudio является названием библиотеки, которую вы пытаетесь связать, я забыл, что Sun Studio включает в себя компилятор. Там должно быть аналогичный вариант для студии солнца, хотя.
Посмотрите, поможет ли это: http://fortran-2000.com/ArnaudRecipes/sharedlib.html