Используйте LD_LIBRARY_PATH. Обратитесь к этим полезным ссылкам также:
http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html
Следующая ссылка решила для меня эту проблему. Как вы можете ссылаться на конкретную версию разделяемой библиотеки в GCC
Выдержка из ссылки, которая помогла мне-
Вместо того, чтобы использовать "-lcurl", используйте "-l:libcurl.so.3". " И конечно же используйте "-L _installed_path_"
Моя ошибка была обратной - "Неправильная версия библиотеки JPEG: библиотека 80, вызывающий абонент ожидает 62"
Чтобы узнать с какой jpeg библиотекой был скомпонован мой бинарник, я сделал-
ldd my_binary | grep jpeg
вывод был-
libjpeg.so.8 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libjpeg.so.8
Очевидно, что бинарник зависел от libjpeg8 (библиотека 80), поэтому я и получил ошибку.
Чтобы узнать, действительно ли у меня в системе есть libjpeg62, я сделал
ldconfig -p | grep jpeg
вывод был-
libplayerjpeg.so.3.0 (libc6,x86-64) => /usr/lib/libplayerjpeg.so.3.0
libopenjpeg.so.2 (libc6,x86-64) => /usr/lib/libopenjpeg.so.2
libjpeg.so.62 (libc6,x86-64) => /usr/local/lib/libjpeg.so.62
libjpeg.so.62 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libjpeg.so.62
libjpeg.so.8 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libjpeg.so.8
libjpeg.so.8 (libc6) => /usr/lib/i386-linux-gnu/libjpeg.so.8
libjpeg.so (libc6,x86-64) => /usr/local/lib/libjpeg.so
libjpeg.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libjpeg.so
Так что в моем случае, вместо того, чтобы просто использовать -ljpeg, я использовал это (в файле make)-
-L/usr/lib/x86_64-linux-gnu/ -l:libjpeg.so.62
Не забудьте заменить #include (jpeglib.h> в вашем cpp-файле на
extern "C" {
#include "jpeglib.h" }