시작에 앞서
보통 실습 용도나 로컬에서 테스트를 할 경우에는 Precompiled library
를 사용해도 되지만 상용 프로그램에 포함할 경우 암호화 알고리즘 라이센스
문제가 발생할 수 있습니다.
문제가 되는 암호화 알고리즘을 제외한 Precompiled library
가 있으면 해결되지만, 특정 NDK
, OpenSSL
버전을 맞춰야 하는 경우 이에 만족하는 라이브러리를 찾기가 힘들어서, 직접 빌드하는 편이 빠릅니다.
빌드 환경 및 사용 버전
- NDK r18b
- OpenSSL 1.0.2l
- Ubuntu 18.04
빌드 시작하기
NDK 이용해
custom toolchain
생성(https://developer.android.com/ndk/guides/standalone_toolchain)
1
python3 $NDK/build/tools/make_standalone_toolchain.py --arch arm64 --api 26 --install-dir /opt/android-26-arm64
OpenSSL 폴더로 이동
1
cd openssl-1.0.2l
Clang 에서
'-mandroid'
를 지원하지 않으므로 Configure 파일에서 해당 부분 삭제1
sed -i -e 's/-mandroid//' Configure
Confiigure
시작1
CROSS_COMPILE=/opt/android-26-arm64/bin/aarch64-linux-android- ./Configure android shared no-idea no-mdc2 no-rc5
make
시작1
2make depend
make ANDROID_DEV=/opt/android-26-arm64/sysroot/usr CALC_VERSIONS="SHLIB_COMPAT=; SHLIB_SOVER=" build_libs생성된 library 가 올바르게 빌드 됐는지 확인
1
readelf -h ./libcrypto.a | grep -i 'class\|machine' | head -2