के साथ एंड्रॉइड पर libcurl पोर्टिंग मैं एसएसएल समर्थन के साथ एंड्रॉइड में libCurl पोर्ट करने की कोशिश कर रहा हूं, चरण एक एसएसएल समर्थन के बिना कर्ल बंदरगाह होगा, मुझे लगता है कि मैंने ऐसा करना शुरू कर दिया। लेकिन मैं एक समस्या में भाग गया।एसएसएल समर्थन
के रूप में मैं देव वेबसाइट पर और Android.mk फ़ाइल में पढ़ा है, कठिन हिस्सा पहले मेकअप को विन्यस्त कर रहा है। तो क्या मैंने किया है:
डाउनलोड एंड्रॉयड स्रोत कोड (! और यह संकलन के बाद से मध्यवर्ती libs में से कुछ की जरूरत है)
डाउनलोड cURL
खोल कर्ल के तहत: {} android_src/बाहरी/कर्ल
इस सामग्री के साथ बाहरी/कर्ल फ़ोल्डर में एक श फ़ाइल बनाने के द्वारा कर्ल के लिए कॉन्फ़िगर स्क्रिप्ट बनाते हैं।
कॉन्फ़िगर:
curl version: 7.26.0 Host setup: arm-unknown-eabi Install prefix: /usr/local Compiler: /home/tanco/Development/AOSP/2.3.3/prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin/arm-eabi-gcc SSL support: no (--with-{ssl,gnutls,nss,polarssl,cyassl,axtls}) SSH support: no (--with-libssh2) zlib support: enabled krb4 support: no (--with-krb4*) GSSAPI support: no (--with-gssapi) SPNEGO support: no (--with-spnego) TLS-SRP support: no (--enable-tls-srp) resolver: default (--enable-ares/--enable-threaded-resolver) ipv6 support: no (--enable-ipv6) IDN support: no (--with-libidn) Build libcurl: Shared=no, Static=yes Built-in manual: enabled --libcurl option: enabled (--disable-libcurl-option) Verbose errors: enabled (--disable-verbose) SSPI support: no (--enable-sspi) ca cert bundle: /etc/ssl/certs/ca-certificates.crt ca cert path: no LDAP support: no (--enable-ldap/--with-ldap-lib/--with-lber-lib) LDAPS support: no (--enable-ldaps) RTSP support: enabled RTMP support: no (--with-librtmp) Protocols: DICT FILE FTP GOPHER HTTP IMAP POP3 RTSP SMTP TELNET TFTP SONAME bump: yes - WARNING: this library will be built with the SONAME number bumped due to (a detected) ABI breakage. See lib/README.curl_off_t for details on this.
पहले अजीब बात आता है कि: कर्ल/libcurl का निर्माण करने के लिए कॉन्फ़िगर
`
export A=/home/user/Development/AOSP/2.3.3
export CC=$A/prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin/arm-eabi-gcc
export NDK=/home/user/Development/Tools/sdk/android/ndk
export NDKLIBS=$NDK/platforms/android-4/arch-arm/usr/include
export SYSROOT=$A/ndk/build/platforms/android-4/arch-arm
export CPPFLAGS="-I $A/system/core/include"
export LDFLAGS="-L$A/out/target/product/generic/obj/lib/ -L$A/out/target/product/generic/system/lib/-L$SYSROOT/usr/lib -Wl,--gc-sections -nostdlib -lc -lm -ldl -llog -lgcc -Wl,--no-undefined,-z,nocopyreloc -Wl,-dynamic-linker,/system/bin/linker -L$NDK/out/target/product/generic/obj/lib/"
export CFLAGS="-fno-exceptions -Wno-multichar -mthumb -mthumb-interwork -nostdlib -lc -ldl -lm -march=armv5te -mtune=xscale -msoft-float -mandroid -fPIC -mthumb-interwork -mthumb -mlong-calls -ffunction-sections -fstack-protector -fno-short-enums -fomit-frame-pointer -fno-strict-aliasing -finline-limit=64 -D__ARM_ARCH_5__ -D__ARM_ARCH_5T__ -D__ARM_ARCH_5E__ -D__ARM_ARCH_5TE__ -DANDROID -DOS_ANDROID -D__NEW__ -D__SGI_STL_INTERNAL_PAIR_H -I$SYSROOT/usr/include -I $A/system/core/include -I $NDKLIBS"
./configure --host=arm-eabi --with-ssl=$A/external/openssl
` और उत्पादन सारांश यह एक है दिमाग में एसएसएल कॉन्फ़िगरेशन में शामिल क्यों नहीं है क्योंकि लिंकर मध्यवर्ती lib को दिखाता है एस और एसएसएल समर्थन ध्वज कहा जाता है, लेकिन जब मैं निर्माण के लिए बनाई गई जेनी प्रोजेक्ट में उसी curl_config.h फ़ाइल का उपयोग करता हूं (क्योंकि इसमें एक स्टैंडअलोन एंड्रॉइड.एमके फ़ाइल है, तो इसे आसानी से जेनी फ़ोल्डर में अनजिप करके संकलित किया जा सकता है एक एंड्रॉयड परियोजना की, AOSP स्रोत में बनाया कॉन्फ़िग फ़ाइल को कॉपी करने और बुला NDK-निर्माण)
तो मैं संकलन और मैं:
$ ndk-build
Compile thumb : curl <= url.c
In file included from /Projects/temp/testNDK/jni/lib/url.c:32:0:
/Tools/sdk/android/ndk/platforms/android-14/arch-arm/usr/include/unistd.h: In function 'getpagesize':
/Tools/sdk/android/ndk/platforms/android-14/arch-arm/usr/include/unistd.h:171:3: warning: nested extern declaration of '__page_size' [-Wnested-externs]
/Tools/sdk/android/ndk/platforms/android-14/arch-arm/usr/include/unistd.h: In function '__getpageshift':
/Tools/sdk/android/ndk/platforms/android-14/arch-arm/usr/include/unistd.h:175:3: warning: nested extern declaration of '__page_shift' [-Wnested-externs]
/Projects/temp/testNDK/jni/lib/url.c: At top level:
/Projects/temp/testNDK/jni/lib/url.c:57:2: error: #error "We can't compile without socket() support!"
make: *** [/Projects/temp/testNDK/obj/local/armeabi/objs/curl/lib/url.o] Error 1
आपके काम के लिए बहुत बहुत धन्यवाद। मैंने आपकी सलाह ली है लेकिन पूर्ण एसडीके की बजाय, केवल कर्नल इंस्टॉलेशन गाइड में सलाह के रूप में स्टैंडअलोन सरचेन का इस्तेमाल किया। तब मैंने ओपनस्ल हेडर और .so फ़ाइलों को टूलचेन में फ़ोल्डरों में कॉपी किया और क्रमशः एलडीएफएलजीएस और सीपीपीएफएलजीएस सेट किया। एक सरल - साथ-एसएसएल ने चाल को एक बार स्थापित किया था। तो भविष्य के संदर्भ के लिए: आपको पूर्ण एंड्रॉइड एसडीके का उपयोग करने की ज़रूरत नहीं है, टूलचैन भी एक संभावित तरीका है। – domenukk
अब यह मामला है, दो + साल पहले यह एओएसपी – Tancho
के बाहर संकलित नहीं था। मुझे यहां आदेशों को संशोधित करना था http://pastebin.com/qzxzc592 यह सुनिश्चित नहीं है कि – ruler501