我正在与AES加密工作PJSIP开源库。用于AES Encryption的库不是C编程中的内置库。所以,我已经用外部库(Libmcrypt)进行AES加密。如何在armv7架构中构建mcrypt库?
我跟着这个网站建立libmcrypt库到我的机器(MAC OSX)。 https://coolestguidesontheplanet.com/install-mcrypt-php-mac-osx-10-10-yosemite-development-server/
https://gist.github.com/bricef/2436364
在构建它在的/ usr /本地/ LIB/路径中创建一个动态库(libmcrypt.dylib)那些库。检查使用该库的架构时,脂-info libmcrypt.dylib命令,它显示
Non-fat file: libmcrypt.dylib is architecture: x86_64
但我为的Android和使用PJSIP IOS设备上创建这些应用程序。他们的架构是armeabi(android)和armv7(IOS)。
在将libmcrypt.dylib(x86_64)链接到PJSIP库(armv7)时,它显示以下错误。
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
我对这些架构并不了解。是否有可能将libmcrypt.dylib(x86_64)转换为libmcrypt.dylib(armv7)。如果是,那么请指导我如何将其转换为armv7架构,如果不是,那么很抱歉浪费你的时间。
在此先感谢!
不,你不能(容易)从x86_64的转换为ARMv7的。你需要从源代码交叉编译它。 –
@lan如果您不介意,请参阅我如何将x86_64交叉编译为armv7体系结构。 – NandhaKumar
您不交叉编译x86_64二进制文件,您可以交叉编译源代码。您为Android/iOS安装的开发套件应包含一个交叉编译器,该编译器可在您的MAC OSX主机上运行,并为Android/iOS生成armv7二进制文件。您需要在适当的开发环境中构建mcrypt。 –