为什么我的程序在“/usr/local/lib”中找不到库?

nki*_*int 13 shared-library opencv libraries

我在 Ubuntu 10.10 上,我刚刚将 opencv 升级到 2.4.2。

问题是每次我打开一个新的shell并尝试编译和运行时,它编译但由于以下错误而无法运行:

./a.out: error while loading shared libraries: libopencv_calib3d.so.2.4: cannot open shared object file: No such file or directory
Run Code Online (Sandbox Code Playgroud)

据我所知,这个文件位于 /usr/local/lib/!

我可以通过预先运行以下命令来运行它:

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

我该如何解决这个问题?

ish*_*ish 6

/usr/local/lib不在默认的 Ubuntu 路径中。您应该将它添加LD_LIBRARY_PATH/etc/environment. 重新启动,新路径将生效。

您还可以在 ~/.bashrc 中针对每个用户进行设置

示例(/etc/environment)

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

示例 (~/.bashrc)

export LD_LIBRARY_PATH="/lib:/usr/lib:/usr/local/lib"
Run Code Online (Sandbox Code Playgroud)

  • 我赞成,但实际上似乎以 root 身份运行 `ldconfig` 是执行此操作的“正确”方法:http://askubuntu.com/a/350076/221408 (12认同)