7

मैं विंडोज़ पर एक बैश में OpenCV स्थापित करने का प्रयास कर रहा हूं (विंडोज़ के लिए विंडोज सबसिस्टम, लिनक्स, डब्ल्यूएसएल) पर्यावरण और यह बहुत मुश्किल साबित हो रहा है।पायथन 3.4 त्रुटि - साझा ऑब्जेक्ट के रूप में निष्पादन योग्य स्टैक को सक्षम नहीं किया जा सकता है: अमान्य तर्क

ImportError: libopencv_core.so.3.1: cannot enable executable stack as shared object requires: Invalid argument 

मैं कैसे स्टैक पर अमल करने के लिए पुस्तकालय सक्षम कर सकता:

मुझे लगता है कि मैं बहुत करीब हो रही है, लेकिन प्रवेश करने अजगर पर, import cv2 निम्न त्रुटि देता है?


मेरे OpenCV *opencv*.so* पुस्तकालय फ़ाइलें /usr/local/lib/ में स्थित हैं। एक सामान्य लिनक्स वातावरण में, मैं इन पुस्तकालयों का उपयोग कर

execstack -c /usr/local/lib/*opencv*.so* 

हालांकि स्टैक पर अमल करने की क्षमता है, भले ही मैं सफलतापूर्वक execstack पैकेज डाउनलोड कर सकते हैं प्रदान करेगा, यह एक मान्यता प्राप्त आदेश मैं अनुमति देने के लिए चला सकते हैं नहीं है ढेर पर निष्पादन। मुझे संदेह है कि डेटा निष्पादन रोकथाम के साथ इसका कुछ संबंध है, स्टैक स्मैशिंग हमलों को रोकने के लिए एक्सक-शील्ड के विंडो का संस्करण।

लेकिन शायद यह पता लगाने के लिए कि क्या गलत है, मैं समस्या के बहुत करीब रहा हूं। मैं इस पायथन पैकेज को क्यों आयात नहीं कर सकता? मैं पाइथन v3.4 और ओपनसीवी का उपयोग कर रहा हूं latest source code (v.3.1) से संकलित।

+0

execstack पर: आप के बाद से यह sbin अंदर रूट के रूप में इसे चलाने के लिए की जरूरत है। हालांकि यह ओपनसीवी मुद्दे के साथ मदद नहीं करता है। – Emiswelt

उत्तर

23

में ऊपर उल्लेख किया है मैं इस समस्या का समाधान करके इसे ठीक करने में सक्षम था इस निम्नलिखित: tatsuya-y.hatenablog.com

मैं खिड़कियों बैश का उपयोग करें और conda install -c menpo opencv3=3.1.0 द्वारा opencv स्थापित तो मैं इस (अजगर 2.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/स्थानीय/lib करने के लिए स्थापित कर रहे हैं। इस प्रकार, आदेश होगा:

sudo execstack -c /usr/local/lib/libopencv_* 
+1

सी/सी ++ के लिए ओपनसीवी 3.2 पर भी मेरे लिए पूरी तरह से काम किया। याद रखें कि इंस्टॉलेशन निर्देशों का पालन करते समय ओपनसीवी लाइब्रेरी/usr/local/lib में स्थापित हैं। – Indeed

+0

@ वास्तव में आपकी टिप्पणी को उन उपयोगकर्ताओं के समाधान को विस्तृत करने के उत्तर में संपादित किया जाना चाहिए जो एनाकोंडा के अलावा कुछ अन्य पायथन पैकेज के माध्यम से स्थापित करते हैं। – ScheissSchiesser

+1

समाधान के लिए धन्यवाद; यह एक विशेष एनाकोंडा वातावरण में चल पाने के लिए कोशिश कर रहा है उन सभी के लिए: अपने lib फ़ाइलें अपने वातावरण में हो सकता है 'sudo execstack -c ~/anaconda3/envs/{ENVIRONMENT_NAME}/lib/libopencv_ *' – lwohlhart

3

ऐसी कई चीजें हैं जो इस समय काम नहीं करती हैं, क्योंकि या तो अनुपूरक सिस्को (डब्लूएसएल में केवल आंशिक कवरेज है, केवल 70% सिस्को लागू किए जाते हैं, उनमें से कुछ केवल आंशिक रूप से), या गायब हैं सॉकेट मोड और विकल्प (डब्ल्यूएसएल अभी तक यूनिक्स डेटाग्राम सॉकेट का समर्थन नहीं करता है, हालांकि यह अगले अंदरूनी निर्माण में उपलब्ध होना चाहिए)।

यदि आप जिथब (BashOnWindows) पर जाते हैं और अपनी समस्या के लिए एक स्ट्रेस पोस्ट करते हैं या इसकी एक प्रतिलिपि पोस्ट करते हैं, तो इसका उत्तर पाने का सबसे अच्छा तरीका है। इस परियोजना पर काम कर रहे माइक्रोसॉफ्ट टीम बहुत सारे फीडबैक और बगटेस्टिंग चाहता है।

स्पष्ट होने के लिए, मैं कह रहा हूं कि आप 100% चल रहे हैं जो अभी तक लागू नहीं हुआ है। हालांकि, यदि आप उस syscall का उपयोग करने वाले कोड के हिस्से को अक्षम करने के लिए अपने .so फ़ाइल के स्रोत स्रोत को देखते हैं, तो एक तरीका हो सकता है (चूंकि पाइथन क्रॉसप्लेटफार्म है और सभी लिनक्स सिस्को सभी * निक्स ऑपरेटिंग सिस्टम में समर्थित नहीं हैं)।

+0

मुझे बिल्कुल वही समस्या थी, क्या आप इस मुद्दे को BashOnWindows पर पोस्ट करते हैं? – ramontiveros

+0

@ramontiveros जारी करने के लिए खोज का प्रयास करें, लेकिन हाँ आप किसी और यह एक strace साथ GitHub पृष्ठ पर पोस्ट करने का प्रयास करते हुए कहा नहीं मिल सकता है। –

1

मैं भी यही समस्या थी लेकिन मैं सिर्फ फिर से स्थापित करने के लिए यह

$ sudo apt-get install execstack

और टिप्पणी Windows 10 का निर्माण 14393,479

0

आप ओपनसीवी स्थापित करने और यहां तक ​​कि lib आयात करने के लिए execstack का उपयोग कर सकते हैं। फिर भी वीडियो कैप्चर करने के लिए, जैसा कि cv2 में है। VideoCapture (0), विंडोज़ के लिए बैश काम नहीं करेगा। आपको एक पूर्ण वितरण स्थापित करने की आवश्यकता है।

संबंधित मुद्दे

 संबंधित मुद्दे