2017-08-17 196 views
13

Açık kaynak kütüphanesi ile PJSIP AES Şifreleme üzerinde çalışıyorum. AES Şifreleme için kullanılan kütüphane, C Programlama'da bulunan yerleşik kütüphane değildir. Yani, AES Şifreleme için harici kütüphane (Libmcrypt) ile gitti.Armv7 mimarisinde mcrypt kütüphanesi nasıl oluşturulur?

Bu siteyi libmcrypt kütüphanesini makineme (MAC OSX) kurmak için takip ettim.

https://gist.github.com/bricef/2436364

https://coolestguidesontheplanet.com/install-mcrypt-php-mac-osx-10-10-yosemite-development-server/

o /usr/local/lib/ yolunda bir dinamik kitaplık (libmcrypt.dylib) oluşturduklarınız kütüphane inşa ederken. kullanarak bu kütüphanenin mimarisini kontrol ederken lipo -bilgi libmcrypt.dylib komutu, bu
Non-fat file: libmcrypt.dylib is architecture: x86_64 

gösterir Ama Android ve PJSIP kullanılarak IOS cihazlar için bu uygulamaları oluşturuyorum. Mimarileri armeabi (android) ve armv7 (IOS) şeklindedir.

libmcrypt.dylib (x86_64) dosyasını PJSIP kütüphanesine (armv7) bağlarken, aşağıdaki hataları gösterir.

Undefined symbols for architecture armv7: 
    "_mcrypt_enc_get_block_size", referenced from: 
     _encrypt_AES in libpjsip-armv7-apple-darwin_ios.a(aes.o) 
     _decrypt_AES in libpjsip-armv7-apple-darwin_ios.a(aes.o) 
    "_mcrypt_generic", referenced from: 
     _encrypt_AES in libpjsip-armv7-apple-darwin_ios.a(aes.o) 
    "_mcrypt_generic_deinit", referenced from: 
     _encrypt_AES in libpjsip-armv7-apple-darwin_ios.a(aes.o) 
     _decrypt_AES in libpjsip-armv7-apple-darwin_ios.a(aes.o) 
    "_mcrypt_generic_init", referenced from: 
     _encrypt_AES in libpjsip-armv7-apple-darwin_ios.a(aes.o) 
     _decrypt_AES in libpjsip-armv7-apple-darwin_ios.a(aes.o) 
    "_mcrypt_module_close", referenced from: 
     _encrypt_AES in libpjsip-armv7-apple-darwin_ios.a(aes.o) 
     _decrypt_AES in libpjsip-armv7-apple-darwin_ios.a(aes.o) 
    "_mcrypt_module_open", referenced from: 
     _encrypt_AES in libpjsip-armv7-apple-darwin_ios.a(aes.o) 
     _decrypt_AES in libpjsip-armv7-apple-darwin_ios.a(aes.o) 
    "_mdecrypt_generic", referenced from: 
     _decrypt_AES in libpjsip-armv7-apple-darwin_ios.a(aes.o) 
ld: symbol(s) not found for architecture armv7 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 
make[2]: *** [../bin/pjsip-test-armv7-apple-darwin_ios] Error 1 
make[1]: *** [pjsip-test-armv7-apple-darwin_ios] Error 2 
make: *** [all] Error 1 

Bu mimariler hakkında pek bir şey bilmiyorum. Libmcrypt.dylib (x86_64) libmcrypt.dylib (armv7) 'ye dönüştürmek mümkün mü? Evet ise, o zaman nasıl onu armv7 mimarisine dönüştürmek için bana rehberlik ve zamanınızı boşa harcamama için özür dilerim.

Teşekkürler!

+3

ARMv7. Kaynaktan çapraz derlemeniz gerekir. –

+0

@lan Eğer bir sakıncası yoksa, x86_64 dosyasını armv7 mimarisine nasıl derlediğime bakın. – NandhaKumar

+3

x86_64 ikili dosyalarını derlemediğinizde, kaynak kodunu çapraz olarak derlersiniz. Android/iOS için kurduğunuz geliştirme kitleri, MAC OSX sunucunuzda çalışan ve Android/iOS için armv7 ikili dosyaları üreten bir çapraz derleyici içermelidir. Uygun geliştirme ortamında mcrypt oluşturmanız gerekir. –

cevap

8

Mcrypt kullanmayın. MCrypt kitaplığı updated since 2007 değil. highly recommended, OpenSSL veya başka bir korunan şifreleme projesine geçersiniz.

PJSIP dokümantasyon hem IOS ve Android cihazlar için OpenSSL'i nasıl kullanılacağına ilişkin talimatlar bulunur:

+1

Teşekkür ederiz sen çok ... Bu bağlantıyı https://github.com/x2on/OpenSSL-for-iPhone takip ettim. buildsl kullanarak buildsl ile iPhone GitHub projesini indirip derledim. Tüm mimarilerde libcrypto.a ve libssl.a kütüphanelerine (i386 armv7s armv7 x86_64 arm64) sahiptir. – NandhaKumar

3

yerine libmcrypt kütüphanelerini kullanmak, aşağıda kullanabilirsiniz openssl (Github) projeleri, yukarıdaki cevaplar ile önerildiği gibi tüm mimarilerde kütüphaneler oluşturmak için. Teşekkürler.

Bu projeyi, hem Android hem de IOS'taki tüm mimarileri derlemek için kullanabileceğiniz build-libssl.sh dosyasını kullanın.

IOS,

için Android,

https://github.com/ruslansalikhov/openssl-for-android

için https://github.com/x2on/OpenSSL-for-iPhone

Sadece indirin ve build-libssl.sh dosyasını kullanarak projeyi derlemek. Platformunuz için tüm kütüphane oluşturur. Android veya IOS'da.

Projeyi indirin ve cmd/terminal kullanarak proje dizinine gidin. Makine gcc derleyici ve SDK yüklü (Android NDK ve IOS) olması gerekir:

cd OpenSSL-for-iPhone/ 

, aşağıdaki komutu kullanarak Project derleme

./build-libssl.sh 

NOT.

Başarılı Derlemeden Sonra, size gidin PROJECT_DIR (OpenSSL-for-iPhone)/lib klasörü. Tüm mimariler için oluşturulan dört kütüphanenin mevcut olduğunu kontrol edin.

aşağıdaki komutu kullanın kütüphane dosyası tarafından desteklenen mimariler kontrol etmek.

lipo -info libcrypto.a 

Bu kütüphane dosyası tarafından desteklendiği mimariler gösterecektir, cmd/terminal arabirimde lib yoluna gidin ve kontrol edin. şişman dosyasında

Mimarileri: libcrypto.a şunlardır: i386 armv7s Hayır, (kolayca) ARMv7 için x86_64 gelen dönüştüremiyor x86_64 arm64