Связывание - какая библиотека включена? - PullRequest
1 голос
/ 16 мая 2011

Страница man gcc гласит: "Порядок имеет значение, если вы используете несколько параметров одного типа; например, если вы указали -L более одного раза, каталоги будут искать в указанном порядке."

Однако, эти каталоги -L ищутся перед системными каталогами (например, те, которые обычно используются ld)?

У меня есть случай, когда у меня есть две библиотеки с одинаковым именем, одна в системном расположении, а другая в моем рабочем каталоге, и я хочу использовать свою, но не могу понять, как проверить, используется ли моя версия.

1 Ответ

1 голос
/ 16 мая 2011

Попробуйте "ldd / bin / your / application". Например:

ldd `which bash`
linux-vdso.so.1 =>  (0x00007fff46eda000)
libncurses.so.5 => /lib/libncurses.so.5 (0x00007facdd618000)
libdl.so.2 => /lib/libdl.so.2 (0x00007facdd414000)
libc.so.6 => /lib/libc.so.6 (0x00007facdd090000)
/lib64/ld-linux-x86-64.so.2 (0x00007facdd863000)

В целом есть 3 варианта, как можно указать, какую библиотеку использовать для вашего двоичного файла:

  1. Установка переменной среды LD_LIBRARY_PATH перед запуском исполняемого файла
  2. опция компоновщика RPATH (см. Другие мои вопросы / ответы на SO, чтобы узнать больше об этой опции)
  3. Добавьте вашу общую библиотеку ко всем другим системным библиотекам.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...