加载共享库时出错:cv2.所以使用php exec()为c++应用程序.在web应用程序

error while loading shared libraries: cv2.so using php exec() for C++ app. on web app

本文关键字:应用程序 exec php c++ web 共享 出错 cv2 加载      更新时间:2023-10-16

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

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

我通过复制cv2修复了这个问题。在/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文件。

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

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

假设您在/usr/local中安装了OpenCV,我将假设您自己编译并安装了它。你有理由相信Debian版本库中的版本不够用/太老了吗?如果没有,我建议从/usr/local卸载你的副本,然后安装libcv-dev (sudo apt-get install libcv-dev)包。然后尝试重新编译可执行文件,看看它是否可以在没有LD_LIBRARY_PATH hack的情况下工作。您还需要重新编译并重新安装依赖于OpenCV的任何其他编译(如果有的话)