Статическая связь с 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

Другие вопросы по тегам