путаница в сонаме

Я читал во многих местах о «настоящем» имени библиотеки и имени символической ссылки.

Но я хочу понять, как именно ищет компоновщик? Иногда я вижу три разных шаблона настройки библиотек. -> означает символическую ссылку

  1. libxxx.so -> libxxx.so.1 -> libxxx.so.1.6.3
  2. libxxx.so.1->libxxx.so.1.6.3
  3. libxxx.so -> libxxx.so.1.6.3

и readelf -a xxx | grep SONAME показывает libxxx.so.1. для всех реальных и символических ссылок.
чего я не понимаю, так это того, как компоновщик ищет. теперь предположим, что я сообщаю компоновщику, что хочу -lxxx, будет ли компоновщик искать имя файла с помощью libxxx.so или он будет искать libxxx.so.1? если первое, то 2 не подойдет; если последнее, это означает, что 3 не будет работать. но я думаю, что все 1,2,3 работает? или нет? значит ли это, что компоновщик ищет то, что соответствует префиксу?

0 ответов

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