के साथ एसडीएल 2 बिल्डिंग मुझे आश्चर्य है कि अगर कोई एंड्रॉइड एनडीके (आर 8 डी) के टूलचैन के साथ ताजा एसडीएल 2 बनाने में कामयाब रहा।एनडीके टूलचेन
एसडीएल 2 रिलीज के बहुत करीब प्रतीत होता है (कल से यह "अब कन्स्ट्रक्शन के तहत नहीं है: http://hg.libsdl.org/SDL/rev/0a3d2ec7af6d)। यह एंड्रॉइड.एमके के साथ आता है और बंडल README.android फ़ाइल में निर्देशों के ठीक बाद ठीक से संकलित करता है। मेरा सवाल यह है कि क्या वास्तव में कोई काम नहीं कर रहा है ऑटोमैटिक आधारित बिल्ड उपलब्ध है या एंड्रॉइड पर संकलित करने के लिए उपलब्ध होगा, या मेरे टूलचेन सेटअप में कुछ गड़बड़ है?
मैंने एनडीके टूलचेन को $ में स्थित दस्तावेज के निर्देशों के बाद स्थापित किया है एनडीके/डॉक्टर/मानक- TOOLCHAIN.html। मैं जीसीसी 4.6 का उपयोग कर रहा हूं। यहां एक पर्यावरण है जिसका उपयोग मैं करता हूं:
#!/bin/sh
export TOOLCHAIN=$HOME/Android/android-14-arm
export PATH=$TOOLCHAIN/bin:$PATH
export SYSROOT=$TOOLCHAIN/sysroot
export CROSS_COMPILE="arm-linux-androideabi"
export CC=$CROSS_COMPILE-gcc
export CXX=$CROSS_COMPILE-g++
export CPP=$CROSS_COMPILE-cpp
export CFLAGS="-march=armv7-a -mfloat-abi=softfp -mfpu=neon"
export LDFLAGS="-march=armv7-a -Wl,--fix-cortex-a8"
echo "Compiler set up for ARM 14"
कॉन्फ़िगर पैरामीटर:
./configure --host=arm-linux-androideabi --prefix=$SYSROOT/usr/local
एक ही विन्यास मैं सफलतापूर्वक libjpeg-टर्बो v8 और SDL_image बनाया के साथ
। कॉन्फ़िगर स्क्रिप्ट पार संकलक पहचानता है, और makefile बनाता है, तथापि, यह X11 समर्थन मिला, OpenGL ES नहीं देख सकते हैं ... मेकअप में विफल रहता है:
In file included from /usr/include/features.h:378:0,
from /usr/include/sys/types.h:27,
from ./include/SDL_stdinc.h:35,
...
मैं कॉन्फ़िगर लॉग की जाँच की, मैं पता नहीं है कि "/ usr/include" कहां से आता है। लेकिन वास्तव में, जेनरेट मेकफ़ाइल उस रेखा को EXTRA_CFLAGS में कंपाइलर में जोड़ती है। एनडीके दस्तावेज़ --with-sysroot = $ SYSROOT को वैकल्पिक के रूप में संदर्भित करता है, मैंने इसे यह देखने के लिए शामिल किया है कि यह समस्या हल करता है, लेकिन इससे मदद नहीं मिली। आखिरी प्रयास के रूप में मैंने मेकफ़ाइल मैन्युअल रूप से संपादित किया, उस संदर्भ को ठीक किया, और अब संकलक ने X11.h के बारे में शिकायत की। AFAIK एंड्रॉइड के पास एक्स 11 के साथ कुछ लेना देना नहीं है, इसलिए मुझे लगता है कि संपूर्ण बिल्ड-पेड़ एनडीके के साथ उपयोग करने के लिए पूरी तरह अनुचित है।
मैंने पुराने धागे here में एक अलग कॉन्फ़िगरेशन की भी कोशिश की है। न तो परिभाषित करने -DANDROID -mandroid -fomit फ्रेम-सूचक है और न ही वापस बदलते मार्च को = ARMv7-एक -mfloat-अबी = softfp -mfpu = VFP -mthumb "समस्या।
पिछली परियोजनाओं पर हल किया, मैं था मेरे कंपाइलर को मान्यता प्राप्त करने के लिए config.guess, और config.sub को रीफ्रेश करने के लिए। एसडीएल उन लोगों का उपयोग नहीं कर रहा है। इसके अलावा कोई मेकफ़ाइल.एक या मेकफ़ाइल.एएम एसडीएल के साथ काम करने के लिए आता है, और अन्य प्लेटफ़ॉर्म के लिए कोई टेम्पलेट नहीं हो सकता है अपने स्वयं के मेकफ़ाइल बनाने के लिए एक अच्छे शुरुआती बिंदु के लिए इस्तेमाल किया जाना चाहिए। इसके अतिरिक्त, मुझे मेकफ़ाइल से कभी निपटना नहीं पड़ा है, मुझे वास्तव में इन समस्याओं को हल करने का कोई मौका नहीं है। भले ही यह सफल हो जाए, मुझे शायद एक कॉन्फ़िगरेशन टूल की भी आवश्यकता होगी , क्योंकि मुझे नहीं पता कि ndk-build कैसे कॉन्फ़िगर स्क्रिप्ट के बिना एसडीएल 2 स्थापित करने का प्रबंधन करता है।
परियोजना के साथ एसडीएल स्रोतों को संकलित करना एकमात्र काम कर रहा है - लेकिन बदसूरत समाधान। मैं स्थापित करके आवश्यक lib और हेडर फ़ाइलों को तैनात करना चाहता हूं।
मुझे आशा है कि समाधान कुछ वास्तव में आसान और स्पष्ट बात मैं सिर्फ के बारे में नहीं सोचा था कि है ...
त्रुटि स्निपेट वास्तव में त्रुटि नहीं है। आप त्रुटि में डालने से चूक गए हैं, और वहां मौजूद सभी में फ़ाइल है जिसमें त्रुटि है। – Samveen
कॉन्फ़िगरेशन का उपयोग करके एसडीएल 2 बिल्डिंग; सिद्धांत में काम करना चाहिए, लेकिन देवताओं में से कोई भी इसे इस तरह से बुलाता नहीं है, यही कारण है कि यह खराब हो गया है। आपको मिलने वाली किसी भी बग की रिपोर्ट करने के लिए स्वतंत्र महसूस करें (और पैच!) बगजिला में https://bugzilla.libsdl.org यदि आप प्रयोग करना पसंद करते हैं, तो एक चीज जिसे आप कोशिश कर सकते हैं, कॉन्फ़िगर कर रहा है, उस प्रतिलिपि के बाद SDL_config.handroid.h को SDL_config.h के शीर्ष पर शामिल करें, फिर रन करें, शायद यह काम करता है (SDL_config_android.h एंड्रॉइड के लिए एक पूर्व पकाया कॉन्फ़िगर हेडर है जिसमें सेन सेटिंग्स होनी चाहिए)। – gabomdq