如何在 armv7 架构中构建 mcrypt 库?
How to build mcrypt library in armv7 architecture?
我正在使用 PJSIP 开源库进行 AES 加密。用于 AES 加密 的库不是 C 编程中可用的内置库。因此,我使用了 外部库 (Libmcrypt) 进行 AES 加密。
我关注此站点以将 libmcrypt 库构建到我的机器中 (MAC OSX)。
https://coolestguidesontheplanet.com/install-mcrypt-php-mac-osx-10-10-yosemite-development-server/
https://gist.github.com/bricef/2436364
在构建这些库时,它在 /usr/local/lib/ 路径中创建了一个动态库 (libmcrypt.dylib)。使用 lipo -info libmcrypt.dylib 命令检查该库的体系结构时,它显示
Non-fat file: libmcrypt.dylib is architecture: x86_64
但我正在使用 PJSIP 为 Android 和 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 架构,如果不是,那么很抱歉浪费您的时间。
提前致谢!
不要使用 mcrypt。 MCrypt 库尚未 updated since 2007. It is highly recommended 您切换到 OpenSSL 或其他维护的加密项目。
PJSIP 文档包含有关如何为 IOS 和 Android 设备使用 OpenSSL 的说明:
我们可以使用下面的 openssl(Github) 项目,而不是使用 libmcrypt 库,按照上述答案的建议在所有体系结构上创建库。谢谢@Tim。
使用此项目 build-libssl.sh 文件为 Android 和 IOS 上的所有架构编译。
对于Android,
https://github.com/ruslansalikhov/openssl-for-android
对于IOS,
https://github.com/x2on/OpenSSL-for-iPhone
只需使用 build-libssl.sh 文件下载并编译项目。它将为您的平台创建所有库。 Android 或 IOS.
下载项目并使用cmd/terminal进入项目目录。
cd OpenSSL-for-iPhone/
使用以下命令编译项目,
./build-libssl.sh
注意:
机器必须安装 gcc 编译器和 SDK(Android ndk 和 IOS)。
编译成功后,进入你的PROJECT_DIR(OpenSSL-for-iPhone)/lib文件夹。检查是否为所有架构创建了四个库。
使用以下命令检查库文件支持的体系结构。进入cmd/terminal界面的lib路径查看,
lipo -info libcrypto.a
它将显示库文件支持哪些架构。
Architectures in the fat file: libcrypto.a are: i386 armv7s armv7
x86_64 arm64
我正在使用 PJSIP 开源库进行 AES 加密。用于 AES 加密 的库不是 C 编程中可用的内置库。因此,我使用了 外部库 (Libmcrypt) 进行 AES 加密。
我关注此站点以将 libmcrypt 库构建到我的机器中 (MAC OSX)。 https://coolestguidesontheplanet.com/install-mcrypt-php-mac-osx-10-10-yosemite-development-server/
https://gist.github.com/bricef/2436364
在构建这些库时,它在 /usr/local/lib/ 路径中创建了一个动态库 (libmcrypt.dylib)。使用 lipo -info libmcrypt.dylib 命令检查该库的体系结构时,它显示
Non-fat file: libmcrypt.dylib is architecture: x86_64
但我正在使用 PJSIP 为 Android 和 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 架构,如果不是,那么很抱歉浪费您的时间。
提前致谢!
不要使用 mcrypt。 MCrypt 库尚未 updated since 2007. It is highly recommended 您切换到 OpenSSL 或其他维护的加密项目。
PJSIP 文档包含有关如何为 IOS 和 Android 设备使用 OpenSSL 的说明:
我们可以使用下面的 openssl(Github) 项目,而不是使用 libmcrypt 库,按照上述答案的建议在所有体系结构上创建库。谢谢@Tim。
使用此项目 build-libssl.sh 文件为 Android 和 IOS 上的所有架构编译。
对于Android,
https://github.com/ruslansalikhov/openssl-for-android
对于IOS,
https://github.com/x2on/OpenSSL-for-iPhone
只需使用 build-libssl.sh 文件下载并编译项目。它将为您的平台创建所有库。 Android 或 IOS.
下载项目并使用cmd/terminal进入项目目录。
cd OpenSSL-for-iPhone/
使用以下命令编译项目,
./build-libssl.sh
注意: 机器必须安装 gcc 编译器和 SDK(Android ndk 和 IOS)。
编译成功后,进入你的PROJECT_DIR(OpenSSL-for-iPhone)/lib文件夹。检查是否为所有架构创建了四个库。
使用以下命令检查库文件支持的体系结构。进入cmd/terminal界面的lib路径查看,
lipo -info libcrypto.a
它将显示库文件支持哪些架构。
Architectures in the fat file: libcrypto.a are: i386 armv7s armv7 x86_64 arm64