Почему общая библиотека связана абсолютным путем?

Я создаю приложение, связывая libociei.so и libcustome.so

CC -o main main.cpp ../lib/libociei.so ../lib/libcustome.so

и скопируйте libociei.so libcustome.so в /usr/lib

затем я использую ldd для проверки библиотеки, он показывает:

   main .....
   libcustome.so  ===>   /usr/lib/libcustome.so
   ../lib/libociei.so

почему libociei.so не перемещается в /usr/lib/libociei.so?

ps: путь к библиотеке ld — /lib:/usr/lib, и я не добавляю ../lib в путь к библиотеке ld


person zhangli    schedule 22.10.2010    source источник
comment
Почему вы не использовали -L и -l для указания библиотеки?   -  person Ignacio Vazquez-Abrams    schedule 22.10.2010
comment
Это может не помочь (поэтому я не публикую это как ответ), но вы неправильно называете эти библиотеки, и я уверен, что у них нет сонимов. см. linux.org/docs/ldp/howto /Программа-Библиотека-HOWTO/   -  person zwol    schedule 22.10.2010


Ответы (2)


Если вы используете Linux (скажем, Ubuntu), то, вероятно, это потому, что вы не запускали:

sudo ldconfig

В других системах я не уверен.

person Robert Massaioli    schedule 22.10.2010
comment
Я не знаю, почему libcustome.so в порядке? - person zhangli; 22.10.2010
comment
Этот ответ не имеет особого смысла? Мое предложение сейчас состоит в том, чтобы попытаться уточнить ваш вопрос и узнать больше о том, как работают общие объекты. - person Robert Massaioli; 22.10.2010

Когда вы используете readelf -d main, есть ли у НЕОБХОДИМЫХ записей полный путь?

Я предполагаю, что ldd ищет библиотеки по пути по умолчанию.

person JohnTortugo    schedule 02.09.2012