Но если программу запускать из консоли, то пути к библиотекам она берет уже из ldconfig.
На самом деле алгоритм разрешения имён и на этапе сборки и на этапе выполнения - гораздо обширнее и интереснее ... но почему-то это не очень известно, и по сети курсируют красивые народные легенды на этот счёт. Более-менее подробное перечисление возможностей см.
Разработка программных проектов в Linux (стр.53 и далее ... о библиотеках).
Есть мысль написать bash скрипт, который создает некий симлинк или еще чего, чтобы программа работала с нужной библиотекой. Куда можно прописать откуда программе брать путь к библиотеке?
Можно, но такой скрипт достаточно бессмысленный - используя LD_LIBRARY_PATH, LD_RUN_PATH и другие способы всегда можно определить (штатными средствами!) какие библиотеки использовать.
А "откуда программе брать путь к библиотеке?" - это по ссылке выше.