我正在使用boost 1.66在Ubuntu 17.04系统上安装caffe。我能够执行make all并毫无问题地进行测试:
我@ icvr1:〜/ PackageDownloads / caffe $ make allmake:没有什么可以做的……
您的 /usr/local/lib/libboost_system.so.1.66.0 显然是你建造的 你自己并希望加载器在运行时找到而无需特殊措施。
/usr/local/lib/libboost_system.so.1.66.0
但是在构建它之后,你没有更新它 LDCONFIG 高速缓存 (因为你不知道你必须这样做);所以运行时加载器还没有意识到这一点 库存在,无法找到它。
当加载器正在寻找组装新进程所需的共享库时, 它不会搜索所有链接器的默认搜索目录。那会很慢。 默认情况下,它会搜索缓存的数据库 /etc/ld.so.cache ,那些图书馆 发现者 ldconfig ,上次运行。
/etc/ld.so.cache
ldconfig
默认情况下, ldconfig 缓存它找到的库 /lib , /usr/lib 在指挥中 列在文件中 /etc/ld.so.conf 和/或任何类似的 *.conf 递归的文件 include 进去了 /etc/ld.so.conf 。 例如:
/lib
/usr/lib
/etc/ld.so.conf
*.conf
include
$ cat /etc/ld.so.conf include /etc/ld.so.conf.d/*.conf $ cat /etc/ld.so.conf.d/*.conf /usr/lib/x86_64-linux-gnu/libfakeroot # libc default configuration /usr/local/lib # Multiarch support /lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu /usr/lib/nvidia-384 /usr/lib32/nvidia-384 /usr/lib/nvidia-384 /usr/lib32/nvidia-384 # Legacy biarch compatibility support /lib32 /usr/lib32
你看到了 /usr/local/lib 在那里列出。所以,要让加载器知道 你的新人 /usr/local/lib/libboost_system.so.1.66.0 , 赶紧跑:
/usr/local/lib
作为根。您需要在安装新的本地构建时执行此操作 共享库 /usr/local/lib 。
如果您希望加载程序找到共享库 /a/b/libfoo.so 那不是 ldconfig 缓存,您可以通过特殊的附加措施来实现 /a/b/libfoo.so 到了价值 环境变量 LD_LIBRARY_PATH (在默认情况下为空)在您启动的环境中 需要加载该库的进程。加载器将搜索 LD_LIBRARY_PATH 目录,如果有的话,在。之前 ldconfig 缓存。然而, 不 添加共享库 到了 ldconfig 缓存应该是一个明智的选择和设置 LD_LIBRARY_PATH 当然,仅仅因为无知而没有充分的动力 ldconfig 装置或链接器 -rpath 选项
/a/b/libfoo.so
LD_LIBRARY_PATH
-rpath