2013-05-28 4 views
19

मैं निम्नलिखित इस्तेमाल किया ...एंड्रॉयड: त्रुटि: नहीं कर सकते हैं खुला crtbegin_dynamic.o: ऐसी कोई फ़ाइल या निर्देशिका

~/Development/Android/android-ndk-r8c/build/tools/make-standalone-toolchain.sh --platform=android-9 --install-dir=/Users/me/toolchain

तब मैं बनाने के निम्न कोड फ़ाइल ...

int main() 
{ 
    return 0; 
} 

मैं कोशिश की ...

<toolchain>/arm-linux-androideabi-gcc test.c 

मैं भी

की कोशिश की

दोनों वापस आ ...

toolchain/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: error: cannot open crtbegin_dynamic.o: No such file or directory 
+0

क्या कोई तरीका है कि मैं इसे मैन्युअल रूप से लिंक कर सकता हूं क्योंकि कुछ स्पष्ट रूप से बंद है? – Jackie

+1

मैंने निर्यात एलडी = आर्म-लिनक्स-एंड्रोइडबी-एलडी निर्यात करने की कोशिश की लेकिन फिर से कोई पासा नहीं। – Jackie

उत्तर

18

यह सरल करने के लिये sysroot सेट:

<toolchain>/arm-linux-androideabi-g++ ~/test.c -o ~/test --sysroot=/home/user/android-ndk/platforms/android-9/arch-arm/ 
+0

धन्यवाद, --इससूट वास्तव में अनिवार्य रूप से अनिवार्य रूप से अनिवार्य रूप से अनिवार्य रूप से अनिवार्य रूप से अनिवार्य रूप से अनिवार्य प्रतीत होता है। –

+0

आपको बहुत धन्यवाद @ ब्लू सिल्वर इसे खोजने के लिए बहुत समय लगता है! – NandhaKumar

+0

आपका स्वागत है। यह 4 साल पहले था :) – BlueSilver

2

ठीक पीछे मैं एंड्रॉयड -9 आदेश प्रति के लिए मेरे toolchain बनाया ...

~/Development/Android/android-ndk-r8c/build/tools/make-standalone-toolchain.sh --platform=android-9 --install-dir=/tmp/my-toolchain

जब मैं भाग गया ...

<install>/android-ndk-r8c$ find ./ -name crtbegin_dynamic* 
.//platforms/android-14/arch-arm/usr/lib/crtbegin_dynamic.o 
.//platforms/android-14/arch-mips/usr/lib/crtbegin_dynamic.o 
.//platforms/android-14/arch-x86/usr/lib/crtbegin_dynamic.o 
.//platforms/android-3/arch-arm/usr/lib/crtbegin_dynamic.o 
.//platforms/android-4/arch-arm/usr/lib/crtbegin_dynamic.o 
.//platforms/android-5/arch-arm/usr/lib/crtbegin_dynamic.o 
.//platforms/android-8/arch-arm/usr/lib/crtbegin_dynamic.o 
.//platforms/android-9/arch-mips/usr/lib/crtbegin_dynamic.o 
.//platforms/android-9/arch-x86/usr/lib/crtbegin_dynamic.o 

जैसा कि आप किसी कारण से एंड्रॉइड-9 के अपने इंस्टॉलेशन को देख सकते हैं, इस फ़ाइल में यह फ़ाइल नहीं है। मैंने एंड्रॉइड -14 के लिए पुनर्निर्मित किया और सब कुछ ठीक काम करता है। किसी को भी पता है कि यह इस तरह कैसे मिला? मेरे हिस्से पर बोनहेड फ़ाइल चलती है?

+1

यह सही जवाब नहीं है। ब्लूसिल्वर का '--इसिसोट' वह कमांड लाइन से गुम है जो गायब 'crtbegin_dynamic.o' का कारण बनता है। – jww

10

/arm-linux-androideabi-gcc test.c

आप इस एक में sysroot वंचित रह जाएंगे।


/arm-linux-androideabi-gcc --sysroot=/sysroot test.c

यह एक, sysroot गलत है। यह हो ahould समान करने के लिए:

$ echo $PATH 
/opt/android-ndk-r9/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86_64/bin: 
/opt/android-sdk-macosx/tools/:/opt/android-sdk-macosx/platform-tools/:/opt/local/bin: 
/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin 
$ echo $LD 
arm-linux-androideabi-ld 

आप शायद toolchain में सभी उपकरणों का निर्यात करना चाहिए:

--sysroot=/opt/android-ndk-r9/platforms/android-18/arch-arm 

तुम भी (सभी उपकरणों रास्ते पर होना चाहिए) एलडी निर्यात करने के लिए की जरूरत है:

export CPP=arm-linux-androideabi-cpp 
export CC=arm-linux-androideabi-gcc 
export CXX=arm-linux-androideabi-g++ 
export LD=arm-linux-androideabi-ld 
export AS=arm-linux-androideabi-as 
export AR=arm-linux-androideabi-ar 
export RANLIB=arm-linux-androideabi-ranlib 

आप एक Autoconf परियोजना पर काम कर रहे हैं, तो इन जोड़ें:

$ echo $ANDROID_SYSROOT 
/opt/android-ndk-r9/platforms/android-18/arch-arm 
export CPPFLAGS="--sysroot=$ANDROID_SYSROOT" 
export CFLAGS="--sysroot=$ANDROID_SYSROOT" 
export CXXFLAGS="--sysroot=$ANDROID_SYSROOT" 
0

यह मेरे लिए काम करता है, मैं इस मुद्दे पर एक ही मुद्दे के साथ आया, मैं एनडीके में जीसीसी -4.8 टूलचेन बनाने की कोशिश कर रहा हूं और एक ही समस्या में भाग गया। मेरी स्थिति के बारे में कुछ अलग बात यह है कि मैं एंड्रॉइड डिवाइस पर निर्माण कर रहा हूं, जिसका मतलब है कि मेरे पास /system/lib में बायोनिक लाइब्रेरी libc.so और libdl.so है।

toolchain-build/binutils-2.23/ld/ld-new: cannot find crtbegin_dynamic.o: No such file or directory 
toolchain-build/binutils-2.23/ld/ld-new: cannot find -lc 
toolchain-build/binutils-2.23/ld/ld-new: cannot find -ldl 
toolchain-build/binutils-2.23/ld/ld-new: cannot find crtend_android.o: No such file or directory 

मेक फ़ाइल एक विशेष निर्देशिका toolchain/gcc-4.8/gcc/ करने के लिए एक -B विकल्प सेट किया गया था तो मैं gcc-4.8/gcc को /system/lib में उन दो साझा libs से सिमलिंक बनाया: जब libgomp के लिए विन्यस्त करने मैं इस त्रुटि हो रही थी। तब मैं crtbegin_dynamic.o और crtend_android.o वस्तु फ़ाइलों crtbegin.o और crtend.o जहां संकलित और toolchain-निर्माण/उपसर्ग/lib/जीसीसी में स्थापित/हाथ-linux-androideabi/4.8/the find` आदेश आप उन्हें खोजने में मदद कर सकते करने के लिए सांकेतिक रूप से लिंक।

आदेशों मैं सिमलिंक बनाने के लिए इस्तेमाल इस तरह देखा:

ln -s ../../prefix/lib/gcc/arm-linux-androideabi/4.8/crtend.o crtend_android.o

toolchian-build/gcc-4.8/gcc निर्देशिका के भीतर से, मेरे लिए है कि क्योंकि thats जहां विन्यास -B विकल्प make पारित कर दिया साथ खोज करने के लिए इशारा कर रहा था काम xgcc पर।

मुझे उम्मीद है कि किसी की मदद करेगा। libatomic पर जाने का समय;)

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