проблема с ликовкой (Solaris, gcc)
От: Аноним  
Дата: 25.08.09 10:29
Оценка:
Есть некая библиотека, скажем libacb.so. При сборке, как обычно, создается файл и три ссылки:
libabc.so.1.0.0
libabc.so.1.0 -> libabc.so.1.0.0
libabc.so.1 -> libabc.so.1.0.0
libabc.so -> libabc.so.1.0.0

Есть программа, использующая libso.so, в make-файле прописано -labc. Проблема в том, что в результате исполняемый файл зависит не от libabc.so, а почему-то от libabs.so.1

Как это можно побороть?

Solaris, gcc 3.4.6
л
Re: проблема с ликовкой (Solaris, gcc)
От: zaufi Земля  
Дата: 25.08.09 13:42
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Есть некая библиотека, скажем libacb.so. При сборке, как обычно, создается файл и три ссылки:

А>libabc.so.1.0.0
А>libabc.so.1.0 -> libabc.so.1.0.0
А>libabc.so.1 -> libabc.so.1.0.0
А>libabc.so -> libabc.so.1.0.0

А>Есть программа, использующая libso.so, в make-файле прописано -labc. Проблема в том, что в результате исполняемый файл зависит не от libabc.so, а почему-то от libabs.so.1

ммм... не понял в чем проблема то? тебе не фиолетово кто там с кем линкуется -- главное чтобы работало правильно...

если не соблюдать library versioning system то можно больно огрести при попытке установить две(несколько) версии libabc и несколько приложений работающих с разными libabc...

А>Как это можно побороть?

а чем это мешает сейчас?

А>Solaris, gcc 3.4.6
Re[2]: проблема с ликовкой (Solaris, gcc)
От: anagaf  
Дата: 25.08.09 17:02
Оценка:
Здравствуйте, zaufi, Вы писали:

А>>Есть некая библиотека, скажем libacb.so. При сборке, как обычно, создается файл и три ссылки:

А>>libabc.so.1.0.0
А>>libabc.so.1.0 -> libabc.so.1.0.0
А>>libabc.so.1 -> libabc.so.1.0.0
А>>libabc.so -> libabc.so.1.0.0

А>>Есть программа, использующая libso.so, в make-файле прописано -labc. Проблема в том, что в результате исполняемый файл зависит не от libabc.so, а почему-то от libabs.so.1

Z>ммм... не понял в чем проблема то? тебе не фиолетово кто там с кем линкуется -- главное чтобы работало правильно...

Работает неправильно. Я наврал (Аноним — это был я, если что), с abc линкуется не конечное приложение, я другая библитека — xyz, которая, в свою очередь, динамически загружается конечным приложением app.Используется Qt и xyz загружается при помощи QLibrary::load():

load failed: "QLibrary::load_sys: Cannot load libxyz.so (ld.so.1: app: fatal: libabc.so.1: open failed: No such file or directory)"

То есть, как я понимаю, он хочет именно libabc.so.1 и имеющийся libabc.so его не устроит.

Z>если не соблюдать library versioning system то можно больно огрести при попытке установить две(несколько) версии libabc и несколько приложений работающих с разными libabc...


По какой-то причине используется нестандартный подход: библиотеки не копируются в /usr/local/lib или еще куда, а хранятся в директории программы. И из всех вариантов libabc там присутствует только libabc.so

А>>Как это можно побороть?

Z>а чем это мешает сейчас?

См.выше. Кроме того, хочется понять, что происходит. Почему создается зависимость именно на .so.1, а не на .so.1.0.0 или на просто .so.

Что интересно, под Линуксом все проходит нормально
Re[3]: проблема с ликовкой (Solaris, gcc)
От: zaufi Земля  
Дата: 25.08.09 19:48
Оценка:
Здравствуйте, anagaf, Вы писали:


A>По какой-то причине используется нестандартный подход: библиотеки не копируются в /usr/local/lib или еще куда, а хранятся в директории программы. И из всех вариантов libabc там присутствует только libabc.so


начните с устранения этой несуразности... библиотеки должны лежать в $(prefix)/lib -- тут вам не виндофс
во вторых попробуйте поиграйться с LD_LIBRARY_PATH.

А>>>Как это можно побороть?

Z>>а чем это мешает сейчас?

A>См.выше. Кроме того, хочется понять, что происходит. Почему создается зависимость именно на .so.1, а не на .so.1.0.0 или на просто .so.


A>Что интересно, под Линуксом все проходит нормально

возможно вы чегото не заметили
попробуйте `ldd libxyz.so` (ну а также настройки линкера.. /etc/ld.so.conf и переменные окружения проверить)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.