android - एंड्रॉइड के लिए फ़्रीटेप 2.5.3 को क्रॉस-कंपाइल करना




android-ndk cross-compiling (3)

विंडोज के लिए /cygdrive/... पर निर्भर नहीं है, और इससे भी बदतर है: यह पहचान नहीं करता है /cygdrive/... पथ। D:/Development/tmp/freetype2 का उपयोग करने की कोशिश करें D:/Development/tmp/freetype2

मैं फ़्रीटीप 2.5.3 को पार करने की कोशिश कर रहा हूं, इसलिए मैं इसे अपने एंड्रॉइड एनडीके ओपनग्ल ईएस 2 प्रोजेक्ट के साथ इस्तेमाल कर सकता हूं, लेकिन मुझे यकीन नहीं है कि यह कैसे करना है। मैं विंडोज पर सिगविन का उपयोग कर रहा हूँ मैंने पहले से ही इसके बारे में बहुत सारी चीज़ें खोज और पढ़ी हैं, लेकिन मुझे अभी भी मदद की ज़रूरत है

मैंने साइगविन में कुछ झंडे निर्यात किए:

$ export NDK_TOOLCHAIN=/cygdrive/d/Development/Android/ndk-standalone-15
$ export PATH="$NDK_TOOLCHAIN/bin/:$PATH"
$ export HOST=arm-linux-androideabi
$ export CC=$HOST-gcc
$ export CXX=$HOST-g++
$ export AR=$HOST-ar
$ export LD=$HOST-ld
$ export AS=$HOST-as
$ export NM=$HOST-nm
$ export STRIP=$HOST-strip
$ export RANLIB=$HOST-ranlib
$ export OBJDUMP=$HOST-objdump
$ export CPPFLAGS="--sysroot=$NDK_TOOLCHAIN/sysroot -I$NDK_TOOLCHAIN/sysroot/usr/include -I$NDK_TOOLCHAIN/include"
$ export LDFLAGS="-L$NDK_TOOLCHAIN/sysroot/usr/lib -L$NDK_TOOLCHAIN/lib"

और फिर मैंने फ़्रीटाइप को संकलित करने की कोशिश की:

$ ./configure --with-sysroot=/cygdrive/d/Development/Android/ndk-standalone-15/sysroot --host=$HOST --prefix=/ft2tmp --build=$BUILD --without-zlib --with-png=no

लेकिन मुझे एक त्रुटि मिली:

फ्रीटाइप बिल्ड सिस्टम - स्वचालित सिस्टम का पता लगाने

निम्नलिखित सेटिंग्स का उपयोग किया जाता है:

मंच यूनिक्स कंपाइलर
arm-linux-androideabi-gcc कॉन्फ़िगरेशन निर्देशिका ./builds/unix कॉन्फ़िगरेशन नियम ./builds/unix/unix.mk

यदि यह आपके सिस्टम या सेटिंग्स के अनुरूप नहीं है तो कृपया इस निर्देशिका से फ़ाइल `config.mk 'को निकालें और तब मदद के लिए INSTALL फ़ाइल पढ़ें।

अन्यथा, एपीआई संदर्भ (बाद में अजगर की ज़रूरत होती है) make' again to build the library, or बस make' again to build the library, or 'रेफोडॉक करें' टाइप करें।

सीडी बिल्ड / यूनिक्स; / bin / sh ./configure '--with-sysroot = / cygdrive / d / विकास / एंड्रॉइड / ndk-standalone-15 / sysroot' '--होस्ट = arm-linux-androideabi' '--prefix = / ft2tmp' '--build =''without-zlib '' --with-png = no 'चेकिंग बिल्ड सिस्टम प्रकार ... x86_64-unknown-cygwin होस्ट सिस्टम प्रकार की जांच ... arm-unknown-linux-androideabi की जांच arm-linux-androideabi-gcc ... arm-linux-androideabi-gcc जांच कर रहा है कि सी संकलक काम करता है ... कोई कॉन्फ़िगर नहीं है: त्रुटि: में /cygdrive/d/Development/tmp/freetype2/builds/unix': configure: error: C compiler cannot create executables See अधिक जानकारी के लिए config.log ' /cygdrive/d/Development/tmp/freetype2/builds/unix': configure: error: C compiler cannot create executables See / unix / detect.mk: 86: लक्ष्य के लिए नुस्खा' सेटअप 'असफल रहा: * [सेटअप] त्रुटि 77

Config.log फ़ाइल में से कुछ:

जीसीसी संस्करण 4.8 (जीसीसी) कॉन्फ़िगर करें: 2925: $? = 0 कॉन्फ़िगर करें: 2914: आर्म-लिनक्स-एंड्रोइडबी-जीसीसी- V> और 5 हाथ- linux-androideabi-gcc.exe: त्रुटि: अपरिचित कमांड लाइन विकल्प '-V' arm-linux-androideabi-gcc.exe: घातक त्रुटि: कोई इनपुट फ़ाइलें संकलन समाप्त नहीं कॉन्फ़िगर करें: 2925: $? = 1 कॉन्फ़िगर करें: 2914: आर्म-लिनक्स-एंड्रोइडबी-जीसीसी -क्विजन> और 5 हाथ- linux-androideabi-gcc.exe: त्रुटि: अपरिचित कमांड लाइन विकल्प '-विक्रमण' arm-linux-androideabi-gcc.exe: घातक त्रुटि: कोई इनपुट फ़ाइलें संकलन समाप्त नहीं कॉन्फ़िगर करें: 2925: $? = 1 कॉन्फ़िगर करें: 2 9 45: सी कम्पाइलर कॉन्फ़िगर काम करता है या नहीं: 2967: arm-linux-androideabi-gcc --sysroot = / cygdrive / d / विकास / एंड्रॉइड / ndk- स्टैंडअलोन -15 // sysroot -i / cygdrive / d / विकास / एंड्रॉइड / ndk-standalone-15 // sysroot / usr / include -i / cygdrive / d / विकास / एंड्रॉइड / ndk- स्टैंडअलोन -15 // शामिल -एल / ​​साइग्रेड / डी / डेवलपमेंट / एंड्रॉइड / एनडीके-स्टैंडअलोन -15 / / sysroot / usr / lib -l / cygdrive / d / विकास / एंड्रॉइड / ndk- स्टैंडअलोन -15 // उदारीकरण conftest.c> और 5 डी: / विकास / एंड्रॉइड / एनडीके-स्टैंडअलोन -15 / बिन / .. /lib/gcc/arm-linux-androideabi/4.8/../../../../arm-linux-androideabi/bin/ld.exe: त्रुटि: crtbegin_dynamic.o खोल नहीं सकते हैं: ऐसा कोई फ़ाइल या निर्देशिका नहीं घ: / विकास / एंड्रॉयड / NDK-स्टैंडअलोन-15 / bin /../ lib / जीसीसी / हाथ-linux-androideabi / 4.8 /../../../../ हाथ-linux-androideabi / bin / ld.exe: त्रुटि: crtend_android.o खोल नहीं सकते हैं: ऐसा कोई फ़ाइल या निर्देशिका नहीं है: / विकास / एंड्रॉइड / ndk-standalone-15 / bin /../ lib / gcc / arm-linux-androideabi / 4.8 /../ ../../../arm-linux-androideabi/bin/ld.exe: त्रुटि: नहीं मिल सकता -एलसी डी: / विकास / एंड्रॉइ d / ndk-standalone-15 / bin /../ lib / gcc / arm-linux-androideabi / 4.8 /../../../..- हाथ- linux-androideabi / bin / ld.exe: त्रुटि : नहीं मिल सकता- collect collect.exe त्रुटि: ld 1 बाहर निकलें स्थिति कॉन्फ़िगर करें: 2971: $? = 1 कॉन्फ़िगर करें: 3009: परिणाम: कोई कॉन्फ़िगर नहीं: विफल

तो मेरा सवाल है कि मुझे इसे ठीक से कैसे करना चाहिए?

संपादित करें:

मैं सीपीपीएफएएलजीएस और एलडीएफएएलजीएस पर इस्तेमाल नहीं किया था और इस्तेमाल किया था। - साथ -सिस्रोट फ्लैग के साथ कॉन्फ़िगर करें, और अब यह ठीक है। अगला समस्या यह है कि जब मैं उपयोग करता हूँ

make

मुझे निम्नलिखित त्रुटि मिलती है:

$ make ./builds/unix/libtool --mode = compil arm-linux-androideabi-gcc -pedantic -ansi -i / cygdrive / d / विकास / tmp / freetype2 / objs -i./builds/unix -i/ cygdrive / डी / डेवलपमेंट / टीएमपी / फ्रीटीपे 2 / इन-सी-वाल -जी-ओ 2-डीएफटीसीएएनएफआईजीआईएपीटीआईआईएसटीआईएमएजी_जीएलआईबी-डीएफटीसीएनआईएफआईजीआईएफआईजीआईएफआईजीआईएचआईजीएचएएच = "" डीडीटी 2_BUILD_LIBRARY -DFT_CONFIG_MODULES_H = "" -ओ / स्काईग्राइव / डी / डेवलपमेंट / टीएमपी / फ्रेटइपी 2 / बॉब / एफसीएसआई /cygdrive/d/Development/tmp/freetype2/src/base/ftsystem.c लिबूटोल: संकलन: आर्म-लिनक्स-एंड्रोइडबी-जीसीसी -पिडीटिक -सिंसी -आई / साइजड्राइव / डी / डेवलपमेंट / टीएमपी / फ्रीटीपे 2 / ओजेजेएस -आई। / बिल्ड्स / यूनिक्स-आई / साइग्रेडिव / डी / डेवलपमेंट / टीएमपी / फ्रीटीपे 2 / इन -सी-वाल -जी-ओ 2-डीएफटीसीएएनएफआईजीआईएपीटीआईआईएसटीएम_जीएलबी "-DFT_CONFIG_CONFIG_H =" -DFT2_BUILD_LIBRARY "-DFT_CONFIG_MODULES_H =" / साइग्रेड / डी / डेवलपमेंट / टीएमपी / फ़्रीटीपी 2 /src/base/ftsystem.c -fPIC -DPIC -o /cygdrive/d/Development/tmp/freetype2/objs/.libs/ftsystem.o arm-linux-androideabi-gcc.exe: त्रुटि: / cygdrive / d / विकास / tmp / freetype2 / src / base / ftsystem.c: ऐसा कोई फ़ाइल या निर्देशिका arm-linux-androideabi-gcc.exe: f atal त्रुटि: कोई इनपुट फ़ाइलें संकलन समाप्त /cygdrive/d/Development/tmp/freetype2/builds/freetype.mk:207: लक्ष्य के लिए नुस्खा '/cygdrive/d/Development/tmp/freetype2/objs/ftsystem.lo' विफल बनाओ: * [/ cygdrive / d / विकास / टीएमपी / फ़्रीटीप 2 / ओबजेएस / एफटीएससिस्टम.लो] त्रुटि 1


आपको Windows-style पथ जहां freetype2 स्थित है प्रदान करने के लिए सेट करना होगा। यहां बताया गया है कि एंड्रॉइड में आपके डेवलपमेंट के लिए उपयोग किए जाने वाले पुस्तकालयों और फाइलों को अपने विंडोज़ पर्यावरण पथ में कैसे शामिल किया जाए। फ़्रीटीप 2 के लिए आपको एक ही चीज़ की ज़रूरत है

इन संदर्भों को जांचना उपयोगी हो सकता है:

जैसा कि आप संभवतः देख लेंगे, एंड्रॉइड ऐप्लीकेशन विकसित करने के लिए उपलब्ध सबसे अच्छी सामग्री लिनक्स पर हैं:

अगर आप एंड्रॉइड डेवलपमेंट के बारे में सचमुच गंभीर हैं, तो अपने विकास को एक लिनक्स प्लेटफ़ॉर्म पर ले जाने पर विचार करने के लिए अच्छा होगा।

आपको ओपनजीएल को प्रारंभ करना चाहिए , जो कि लिनक्स , विंडोज और मैकोड पर ओपनजीएल के साथ काम करने के बारे में कई ट्यूटोरियल प्रदान करता है। कदम दृष्टिकोण से एक कोमल कदम उठाते हुए अपने ओपनजीएल विकास कौशल को सफलतापूर्वक विकसित करने के लिए अधिक उत्पादक है।


सबसे पहले, एक स्टैंडअलोन एनडीके टूलचैन तैयार करें। Https://.com/a/24978903/192373 देखें मैंने निम्नलिखित पैरामीटर का इस्तेमाल किया:

bash-3.1$ d:/dev/Android/ndk/build/tools/make-standalone-toolchain.sh --platform=android-14 --toolchain=arm-linux-androideabi-4.8 --system=windows-x86_64 --arch=armv7a

इसके बाद, सुनिश्चित करें कि आपने /usr/bin/gcc

bash-3.1$ ./configure --host=arm-linux-androideabi --prefix=d:/Dev/Android/standalone-toolchain-armv7a-android-17 --without-zlib --with-png=no

अंत में, मैं make और मैं देखता हूं

 Directory of d:\dev\freetype-2.5.3\objs\.libs

27/07/2014  10:43         3,462,596 libfreetype.a
27/07/2014  10:43               960 libfreetype.la
27/07/2014  10:43               961 libfreetype.lai
27/07/2014  10:43         2,320,272 libfreetype.so






freetype2