gmp shared libraries not found

tekknolagi picture tekknolagi · Aug 29, 2011 · Viewed 17.7k times · Source

I have a very simple GMP program in C (below)

#include <stdio.h>
#include <gmp.h>

int main() {
    mpf_t a, b, inter;
    mpf_init(a);
    mpf_init(b);
    mpf_init(inter);
    mpf_set_d(a, 3.0);
    mpf_set_d(b, 5.0);
    mpf_add(inter, a, b);
    gmp_printf("%F+%F=%F\n", a, b, inter);
}

For some reason, it compiles alright, but when run, it produces

error while loading shared libraries: libgmp.so.10: cannot open shared object file: No such file or directory

What's wrong?

Answer

Steve-o picture Steve-o · Aug 29, 2011

It would appear /usr/local/lib is not in /etc/ld.so.conf or /etc/ld.so.conf.d/*.

If it is simply run sudo ldconfig (or ldconfig as root) and try again.

If it is not, either add it or manually override the library path for the command:

LD_LIBRARY_PATH=/usr/local/lib ./myprogram

It does seem your configuration is strange, check that /usr/local/lib/libgmp.so.10 is a link to /usr/local/lib/libgmp.so.10.0.2, e.g.

$ ls -ltr /usr/lib/libgmp.so.3
lrwxrwxrwx 1 root root 15 2011-07-27 12:15 /usr/lib/libgmp.so.3 -> libgmp.so.3.5.2