Arch Linux Android Studio cmake "OPENSSL_1.0.0 not found" を解決する
/usr/lib/libcrypto.so.1.0.0: version `OPENSSL_1.0.0' not found
Error:FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':project:externalNativeBuildCleanDebug'. > Build command failed. Error while executing process ${HOME}/sdk/android-sdk-linux/cmake/3.6.3155560/bin/cmake with arguments {--build ${HOME}/Project/project/.externalNativeBuild/cmake/debug/armeabi --target clean} ${HOME}/sdk/android-sdk-linux/cmake/3.6.3155560/bin/cmake: /usr/lib/libcrypto.so.1.0.0: version `OPENSSL_1.0.0' not found (required by ${HOME}/sdk/android-sdk-linux/cmake/3.6.3155560/bin/cmake) ${HOME}/sdk/android-sdk-linux/cmake/3.6.3155560/bin/cmake: /usr/lib/libssl.so.1.0.0: version `OPENSSL_1.0.0' not found (required by ${HOME}/sdk/android-sdk-linux/cmake/3.6.3155560/bin/cmake) ${HOME}/sdk/android-sdk-linux/cmake/3.6.3155560/bin/cmake: /usr/lib/libssl.so.1.0.0: version `OPENSSL_1.0.1' not found (required by ${HOME}/sdk/android-sdk-linux/cmake/3.6.3155560/bin/cmake) * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
適当にアップデートしてたら遭遇してしまいました。
とりあえずぐぐると一番上にStack Overflow、さすが。
この中ではopensslパッケージをダウングレードすれば良いと書かれてますが、個人的に嫌でした。
下の方までスクロールしていくと「studio.shを編集する」という回答があります。
これでも良かったんですが、Android Studioのアップデートでパッチを当てるたびにconflictが出るのもめんどくさそうなので、別の対処法を取りました。
対処法
opensslをビルドして専用のディレクトリにインストールする。起動時にLD_LIBRARY_PATHを指定する。
微妙といえば微妙ですが、Android StudioやArch Linuxのパッケージアップデートのたびに問題起こるよりマシな感があったので……。
- libresslをダウンロードする。
- インストールフォルダを指定してビルドする。
- インストールする。ちょっと小細工する。
- 起動時に
LD_LIBRARY_PREFIX
で専用ディレクトリを指定する。
∠( ゚д゚)/
1. libresslをダウンロードする。
wget https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-2.5.4.tar.gz
2. インストールフォルダを指定してビルドする。
cmake
を使っているので./configure
を使う場合は適宜読み替え。
tar xvf libressl-2.5.4.tar.gz mkdir libressl-2.5.4-build && cd libressl-2.5.4-build cmake -D CMAKE_INSTALL_PREFIX=${YOUR_INSTALL_DIRECTORY} ../libressl-2.5.4 make -j`nproc`
3. インストールする。ちょっと小細工する。
CMAKE_INSTALL_PREFIX
をつけてるのでmake install
すればインストールはできるんですが、
Android Studioで入るcmake
はlibXXX.so.1.0.0
を探すようです。
インストールしても上記のシンボリックリンクは作られないので適当に作ります。
make install cd ${YOUR_INSTALL_DIRECTORY}/lib ln -s libssl.so{,.1.0.0} ln -s libcrypto.so{,.1.0.0} # libtlsは使わないのでスルー
4. 起動時に LD_LIBRARY_PREFIX
で専用ディレクトリを指定する
自分の起動方法に合わせて読み替えて下さい。僕はDesktop Entryから起動するので、
vim ~/.local/share/applications/jetbrains-studio.desktop
ファイルの内容は以下ですが、${HOME}
や${YOUR_INSTALL_DIRECTORY}
のようなシェル変数の書き方をしてる部分は実際のパスに置き換えて下さい
[Desktop Entry] Version=1.0 Type=Application Name=Android Studio Icon=${HOME}/Tools/android-studio/bin/studio.png Exec=env LD_LIBRARY_PATH=${YOUR_INSTALL_DIRECTORY}/lib "${HOME}/Tools/android-studio/bin/studio.sh" %f Comment=Develop with pleasure! Categories=Development;IDE; Terminal=false StartupWMClass=jetbrains-studio
Execのところでenv LD_LIBRARY_PATH=${YOUR_INSTALL_DIRECTORY}
を指定してます。
これで解決しました。お疲れ様でした。