Как определить путь библиотеки Linux Ubuntu? То есть, как линкер знает, где можно захватить объектные файлы при связывании моей программы?
Путь библиотеки Linux Ubuntu
Ответ 1
Пути файлов можно явно указывать при связывании с использованием параметра -L
, а также переменной среды LD_LIBRARY_PATH
.
Есть также некоторые пути, жестко закодированные в компоновщике, используя параметр -L
. Вы можете увидеть их с помощью команды:
gcc -Xlinker -v
Ответ 2
Посмотрите /etc/ld.so.conf
и файлы в каталоге /etc/ld.so.conf.d/
- там, где он установлен.
Ответ 3
Если это не стандартный путь (/lib
, /usr/lib
), вы можете указать местоположение с флагом компилятора. Для g++
it -L/some/path/lib
. Если вы используете autotools, вы можете просто настроить с помощью LDFLAGS=-L/some/path/lib
, если вам нужен конкретный путь. Если configure был правильно спроектирован для проекта, он должен иметь параметр --with-some-library=PATH
, где вы также можете указать путь только для этой библиотеки.
Ответ 4
При связывании вам нужно указать флаг -L, чтобы указать, где находится библиотека. Во время выполнения динамический компоновщик использует пути, указанные в "/etc/ld.so.conf", "/etc/ld.so.conf.d/*" и значение LD_LIBRARY_PATH.
Ответ 5
"sudo ldconfig" обновляет системный кеш, если вы только что установили что-то новое.