我在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);
}
出于某种原因,它编译正常,但在运行时会产生
error while loading shared libraries: libgmp.so.10: cannot open shared object file: No such file or directory
怎么了?
答案 0 :(得分:9)
看来/usr/local/lib
不在/etc/ld.so.conf
或/etc/ld.so.conf.d/*
。
如果只是以sudo ldconfig
(或ldconfig
以root身份)运行,请重试。
如果不是,请添加它或手动覆盖命令的库路径:
LD_LIBRARY_PATH=/usr/local/lib ./myprogram
您的配置似乎很奇怪,请检查/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