2011-05-07 9 views
7

Android NDK'ye taşınması gereken karmaşık bir açık kaynak kitaplığına sahibim. İlk olarak, (./Configure) yapılandırmam gerekiyor. Anlıyorum: /home/user/android-ndk/build/prebuilt/ linux-x86/arm-eabi-4.4.0/bin/arm-eabi-gcc ile çapraz derleme yapmak zorundayım. Bu yardımcı program bir kütüphaneyi doğru şekilde yapılandırır mı? evet ise, o zaman soru 2:Arm-eabi-gcc ve çapraz derleme hakkında

1.Bu tür bir kütüphaneyi derlemeye çalışıyorum: libao. Bu komutları kullanın:


PREBUILT =/home/user/android-ndk/build/prebuilt/linux-x86/arm- 
eabi-4.4.0 
PLATFORM =/home/user/android-ndk/build/platforms/android-3/arch-arm 
INSTALL =/home/user/sox-14.3.2/com 

export CC = "/ home/user/android-ndk/build/prebuilt/linux-x86/arm- 
eabi-4.4.0/bin/arm-eabi-gcc" 
export CFLAGS = "-fPIC-DANDROID" 
export LDFLAGS = "-Wl,-T, $ PREBUILT/arm-eabi/lib/ldscripts/
armelf.x-Wl,-rpath-link = $ PLATFORM/usr/lib-L $ PLATFORM/usr/
lib-nostdlib $ PREBUILT/lib/gcc/arm-eabi/4.4.0/crtbegin.o $ PREBUILT/ 
lib/gcc/arm-eabi/4.4.0/crtend.o-lc-lm-ldl " 

./Configure - host = arm - with-gnu-ld - enable-shared \ 

toplanması sonunda aşağıdaki alırsınız: yapılandırmak: hatası: Bu platformda bulunamadı 16 bit türü!

Bu ne anlama geliyor? Kitaplığı nasıl düzeltebilir ve yapılandırabilirsiniz? Belki kütüphaneyi nasıl yapılandırabilirim?

cevap

7

Android için kitaplık oluşturmak için ./configure komut dosyasını kullanmanın zor (hatta imkansız) olduğunu düşünüyorum. Android'in yerel kod için kendi bina sistemi Android.mk var ve bence bu en kolay yol olacak. Böyle bir makefile el ile hazırlamanız ve sonra NDK ile gelen ndk-build komut dosyasını kullanmanız gerekir. NDK örnekleri ile birlikte yüklenir ve bu dosyanın nasıl göründüğünü kontrol edebilirsiniz.

Yapılandırmayı config.h oluşturmak için çalıştırmak isterseniz, lütfen bu bağlantıyı http://warpedtimes.wordpress.com/2010/02/03/building-open-source-libraries-with-android-ndk/ izleyin. Bu ./configure parametreleri kümesini aşağıdaki istediğim bu That

./configure –host=arm-eabi CC=arm-eabi-gcc CPPFLAGS=”-I$ANDROID_ROOT/build/platforms/android-3/arch-arm/usr/include/” CFLAGS=”-nostdlib” LDFLAGS=”-Wl,-rpath-link=$ANDROID_ROOT/build/platforms/android-3/arch-arm/usr/lib/ -L$ANDROID_ROOT/build/platforms/android-3/arch-arm/usr/lib/” LIBS=”-lc “ 
+0

çalışır, ancak ben ilk kütüphaneyi yapılandırmanız gerekebilir bilgileri içerir! Nasıl yapılır? O zamandan beri iyiyim. h dosyaları! – Kyborg2011

+0

Teşekkür ederiz! İşe yarıyor! Muhtemelen kütüphane podulyuchil'in LDFLAGS'ında gerekli değildir. Ne düşünüyorsun: Kütüphane skonfigurirovanye bu yöntem tüm Android telefonlarda ya da sadece ARM'de teoride çalışacak mı? – Kyborg2011

+0

Şu anda tüm Android telefonlarda ARM işlemci var. Ancak bu CPU'lar aynı değildir, bazıları örneğin kayan nokta birimi içermez. Lütfen http://source-android.frandroid.com/ndk/docs/APPLICATION-MK.html - APP_ABI ve http://source-android.frandroid.com/ndk/docs/CPU-ARCH-ABIS.html adreslerini okuyun. CPU'ların desteklenen özelliklerini nasıl seçerim. Muhtemelen tüm telefonlar için çalışması gereken armutu seçtiniz, ama aynı zamanda kayan nokta birimi ile en yeni CPU'yu daha iyi desteklemek için armeabi-v7a ile derlenmiş kütüphane sağlamak da iyi olacaktır. – Zuljin