0

我在 Debian 7.0.0 上使用带有 LAMP 的 apache 2。我构建了一个 C++ 应用程序,其中包括使用 CodeBlocks 10.05 的 openCV-2.4.0。当我最初运行可执行文件时,我收到以下消息

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

我通过将 cv2.so 复制到 /usr/local/lib 来解决这个问题,把

LD_LIBRARY_PATH=/usr/local/lib ; export LD_LIBRARY_PATH

进入我的主目录的 .bashrc 文件并运行

. .bashrc

在我的主目录中。但是,LAMP 应用程序以 www-data 作为用户运行,因此毫不奇怪,当我使用 php exec() 在 Web 上运行应用程序时,我再次收到错误消息

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

目前尚不清楚如何解决此问题,因为 www-data 没有带有 .bashrc 文件的主目录。

4

1 回答 1

0

您可以尝试将线路放入/etc/profile或其他系统范围的位置(/etc/bashrc可能无法正常工作,因为 Apache 可能没有由 BASH 运行。)您可能需要重新启动 Apache 和/或计算机才能传播此更改。

但是,LD_LIBRARY_PATH它是最常被滥用的环境变量之一,您需要它来运行此可执行文件这一事实可能是一个更大问题的征兆,很可能您的可执行文件没有正确链接,OpenCV 没有正确安装,或者您的系统配置不正确。

鉴于您已经安装了 OpenCV /usr/local,我假设您自己编译并安装了它。您是否有理由相信 Debian 存储库中打包的版本不足/太旧?如果没有,我建议您卸载您的副本/usr/local并安装包libcv-devsudo apt-get install libcv-dev。)然后尝试重新编译您的可执行文件,看看它是否可以在没有LD_LIBRARY_PATH黑客攻击的情况下工作。您还需要重新编译并重新安装您编译的任何其他依赖于 OpenCV(如果有的话)的东西。

于 2013-06-01T22:06:27.297 回答