एंड्रॉइड शेल पर स्वयं निष्पादन योग्य चल रहा है


14

मुझे एक विशिष्ट कमांड लाइन टूल की आवश्यकता है और मैंने अपने लिनक्स शेल में सी प्रोग्राम बनाया है। मैंने एआरएम क्रॉस-कंपाइलर के साथ कार्यक्रम संकलित किया है। मैंने तब प्रोग्राम को Android फ़ाइल सिस्टम में स्थानांतरित कर दिया है और इसे चलाने का प्रयास किया है।

आउटपुट अनुमति से वंचित है।

Android फ़ाइल सिस्टम में अपने स्वयं के संकलित कार्यक्रम चलाने के लिए मुझे क्या करना होगा?


कोशिश की chmod +x pgmऔर फिर ./pgmभी?
ott--

8
संभवतः आपने इसे अपने sdcard पर रखा था - जिसे noexecध्वज के साथ रखा गया है । आपको इसे फोन के आंतरिक भंडारण में ले जाने की आवश्यकता है, या इसे एक शेल (जैसे sh /path/to/myexecutable) के माध्यम से चलाना है ।
इज़ी

जवाबों:


14

मुझे लगता है कि आपने अपने निष्पादन योग्य को एसडी-कार्ड पर अपलोड करने के लिए एडीबी पुश का उपयोग किया है। दुर्भाग्य से sd-card हमेशा "noexec" के साथ लगाया जाता है, जिसका अर्थ है कि आप यहाँ से कुछ भी निष्पादित नहीं कर सकते।

इसलिए आपको स्थानीय फाइलसिस्टम के लिए निष्पादन योग्य को कॉपी करना होगा, जैसे / डेटा / स्थानीय। यदि डिवाइस रूट नहीं किया गया है या आपके पास व्यस्त बॉक्स नहीं है, तो कोई "cp" कमांड नहीं होगी। आप बस बिल्ली का उपयोग कर सकते हैं cat /sdcard/myprog > /data/local/myprog:।

फिर आपको निष्पादन योग्य अनुमति को निष्पादन योग्य पर सेट करना होगा। Android पर Chmod आमतौर पर "u + x" सिंटैक्स का समर्थन नहीं करता है। इसलिए आपको कॉल करना होगा chmod 555 /data/local/myprog

बाद में आप अपने निष्पादन योग्य निष्पादित कर सकते हैं /data/local/myprog:।


आपके उत्तर के लिए thx वास्तव में समस्या बाइनरी पीढ़ी पर थी। यह सही तरीके से उत्पन्न नहीं हो रहा था! ;)
नूनो सैंटोस

मेरे पास मेरे डिवाइस पर बिजीबॉक्स है, लेकिन यह कमांड: शेल @ n200C: / $ व्यस्तबॉक्स cp / storage / external_storage / sda1 / ffmpeg / data / ------ शो एरर = cp: '/ data / ffmpeg नहीं बना सकता ': अनुमति से वंचित
डॉजकी

tmp-mksh: /data/local/workspace/clang+llvm-5.0.0-aarch64-linux-gnu/bin/clang++: No such file or directoryहालाँकि फ़ाइल मौजूद है
नेकटवि

/ डेटा / स्थानीय को मेरे डिवाइस पर रूट एक्सेस की आवश्यकता है। इसके बजाय / डेटा / स्थानीय / tmp का उपयोग करें
Tzish

10

सबसे पहले, आपको इसे एक निर्देशिका में धकेलना होगा, जैसे कि /data/local/tmp। फिर, आपको उस उपयोग के लिए अनुमति सेट करनी होगी chmod 755 executable। उसके बाद, आप इसे चला सकते हैं ./executable

पूर्ण चरण निम्नानुसार हैं:

अदब पुश निष्पादन योग्य / डेटा / स्थानीय / tmp
अदब का खोल
सीडी / डेटा / स्थानीय / tmp
chmod 755 निष्पादन योग्य
./executable

वैकल्पिक रूप से, यदि आप इसे अपने एसेट फ़ोल्डर से चलाना चाहते हैं, तो आपको फ़ाइल को अपने डेटा फ़ोल्डर में कॉपी करना होगा /data/data/packagename/। फिर Fileकक्षा का उपयोग करते हुए , फ़ाइल के लिए setExecutableध्वज को सेट करें trueऔर इसे रूट क्लास या रूट टूल जैसे थर्ड पार्टी पैकेज द्वारा चलाएं ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.