我一直试图在Bash ()环境中安装OpenCV,事实证明这非常困难。
我想我已经非常接近了,但是当进入python时,import cv2
会给出以下错误:
ImportError: libopencv_core.so.3.1: cannot enable executable stack as shared object requires: Invalid argument
如何使库在堆栈上执行?
我的OpenCV *opencv*.so*
库文件位于/usr/local/lib/
中。在正常的Linux环境中,我将授予这些库在堆栈上执行的能力。
execstack -c /usr/local/lib/*opencv*.so*
但是,尽管我可以成功地下载execstack
包,但它不是我可以运行的允许在堆栈上执行的公认命令。我怀疑这与数据执行预防,窗口版本的Execution,以防止堆栈崩溃攻击有关。
但也许我太接近这个问题了,弄不清楚到底出了什么问题。为什么我不能导入这个python包?我使用从OpenCV编译的Pythonv3.4和最新源代码 (v.3.1)。
发布于 2016-12-20 10:03:37
我在下面解决了这个问题:tatsuya-y.hatenablog.com
我使用windows并通过conda install -c menpo opencv3=3.1.0
安装opencv,然后我得到了这个(python2.7) >>>import cv2 Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: libopencv_ccalib.so.3.1: cannot enable executable stack as shared object requires: Invalid argument
我用execstack
命令来解决这个问题
sudo apt-get install execstack
sudo execstack -c $HOME/anaconda2/lib/libopencv_*
然后sudo apt-get install gtk2.0-0
问题解决了!>>> cv2.__version__ '3.1.0'
请记住,如果按照在线安装说明安装,opencv库将安装到/usr/local/lib。因此,该命令将是:
sudo execstack -c /usr/local/lib/libopencv_*
发布于 2016-08-30 09:12:37
现在有很多事情根本无法工作,因为要么是未实现的syscalls (WSL只有部分覆盖,只有大约70%的系统实现,有些只是部分实现),要么是缺少套接字模式和选项(WSL还不支持Unix数据报套接字,尽管它应该在下一个内部构建中可用)。
如果你去github (BashOnWindows)发表文章或者搜索你的问题并找到它的副本,这是获得答案的最好方法。微软团队在这个项目上需要很多反馈和错误测试。
明确地说,我是说你已经百分之百地遇到了一些还没有实现的东西。但是,如果您查看.so文件的源代码,可以禁用使用syscall的部分代码(因为Python是跨平台的,而且不是所有的Linux都支持所有*nix操作系统),那么可能有一种方法。
发布于 2016-12-05 21:37:33
我也有同样的问题,但我能够通过重新安装它来修复它。
$ sudo apt-get install execstack
以及上述在Windows10Build 14393.479中提到的评论
https://stackoverflow.com/questions/39136040
复制相似问题