Я полагаю, что вы действительно хотите использовать разделяемую библиотеку, а не статическую, поэтому мы не будем обсуждать, что лучше разделяемой или статической библиотеки, и когда используется та или иная библиотека, - обе имеют свои преимущества и недостатки.
Если вы знаете, где находятся библиотеки на компьютере, на котором выполняется ваше приложение, и это местоположение не меняется, вы можете скомпилировать его следующим образом:
g ++ -Wl, rpath, full_path_to_libraries
Это будет встроенный путь к самому двоичному файлу.
Если rpath не используется, компилятор будет искать переменную окружения LD_RUN_PATH
используется во время компиляции:
export LD_RUN_PATH = full_path_to_libraries (для bash)
g ++ .... (компилировать)
Мое личное предпочтение - rpath, поскольку путь встроен в ваш код (например, makefile), и если вы используете систему контроля версий, вы всегда можете узнать, какой путь был использован.
Существуют также альтернативы для указания пути к библиотекам во время выполнения.
Первый - установить переменную окружения LD_LIBRARY_PATH .
Вы можете установить его несколькими способами: