找不到gmp共享库

tek*_*agi 6 c shared-libraries gmp

我在C中有一个非常简单的GMP程序(下面)

#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);
}
Run Code Online (Sandbox Code Playgroud)

由于某种原因,它编译正常,但在运行时,它会产生

error while loading shared libraries: libgmp.so.10: cannot open shared object file: No such file or directory
Run Code Online (Sandbox Code Playgroud)

怎么了?

Ste*_*e-o 10

它似乎/usr/local/lib不在/etc/ld.so.conf/etc/ld.so.conf.d/*.

如果它只是运行sudo ldconfig(或ldconfig以root身份)并再试一次.

如果不是,请添加它或手动覆盖命令的库路径:

LD_LIBRARY_PATH=/usr/local/lib ./myprogram
Run Code Online (Sandbox Code Playgroud)

看起来您的配置确实很奇怪,请检查是否/usr/local/lib/libgmp.so.10是链接/usr/local/lib/libgmp.so.10.0.2,例如

$ 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
Run Code Online (Sandbox Code Playgroud)