Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: zhangliОтветов: 2

Я создаю приложение, связывая 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

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

c++sharedlinkerldd

Ответы

Ответ 1 · Robert Massaioli

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

sudo ldconfig

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

Ответ 2 · JohnTortugo

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

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы