Это предупреждение появляется, когда наш исполняемый файл пытается скомпоноваться с libfoo.so, который зависит от libbar.so. Однако компилятор не может найти, где находится libbar.so. Поэтому он предлагает вам попробовать использовать -rpath или -rpath-link для устранения этого предупреждения.

Выведем предупреждение в первый. Когда мы входим

gcc -shared -fPIC -o bar/libbar.so bar/bar.c
gcc -shared -fPIC -o libfoo.so foo.c -lbar -Lbar
gcc main.c - lfoo -L.

И мы получим

/usr/bin/ld: предупреждение: libbar.so, необходимый для ./libfoo.so, не найден (попробуйте использовать -rpath или -rpath-link)

Давайте попробуем -rpath и -rpath-link…

gcc main.c -lfoo -L. -Wl,-rpath=bar/
gcc main.c -lfoo -L. -Wl,-rpath-link=bar/

Оба варианта работают, потому что мы сообщаем gcc, где находится libbar.so.

Различие между -rpath и -rpath-link заключается в том, что при использовании -rpath путь к библиотеке запекается в динамическом разделе, так что LD_LIBRARY_PATH не требуется во время выполнения.