Antergos Linux上的“OPENSSL_1.0.0 not found”

问题描述:

我正在Antergos Linux环境中开发android studio上的应用程序。一切正常,同步,建立和调试。一天前,一些更新,它不再建立。源代码完全相同,我已经尝试将我的代码重置为以前也可以使用的较早的提交,所以我知道问题不在我的代码中。 Gradle同步消息是:Antergos Linux上的“OPENSSL_1.0.0 not found”

Build command failed. 

Error while executing process /home/andre/Android/Sdk/cmake/3.6.3155560/bin/cmake with arguments {-H/home/andre/Development/Edru/edru-android/app 
-B/home/andre/Development/Edru/edru-android/app/.externalNativeBuild/cmake/debug/armeabi 
-GAndroid Gradle - Ninja -DANDROID_ABI=armeabi -DANDROID_NDK=/home/andre/Android/Sdk/ndk-bundle -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=/home/andre/Development/Edru/edru-android/app/build/intermediates/cmake/debug/obj/armeabi 
-DCMAKE_BUILD_TYPE=Debug -DCMAKE_MAKE_PROGRAM=/home/andre/Android/Sdk/cmake/3.6.3155560/bin/ninja 
-DCMAKE_TOOLCHAIN_FILE=/home/andre/Android/Sdk/ndk-bundle/build/cmake/android.toolchain.cmake 
-DANDROID_PLATFORM=android-19 -DCMAKE_CXX_FLAGS=-std=c++11 -frtti -fexceptions} 

/home/andre/Android/Sdk/cmake/3.6.3155560/bin/cmake: /usr/lib/libcrypto.so.1.0.0: version `OPENSSL_1.0.0' not found (required by /home/andre/Android/Sdk/cmake/3.6.3155560/bin/cmake) 

/home/andre/Android/Sdk/cmake/3.6.3155560/bin/cmake: /usr/lib/libssl.so.1.0.0: version `OPENSSL_1.0.0' not found (required by /home/andre/Android/Sdk/cmake/3.6.3155560/bin/cmake) 

/home/andre/Android/Sdk/cmake/3.6.3155560/bin/cmake: /usr/lib/libssl.so.1.0.0: version `OPENSSL_1.0.1' not found (required by /home/andre/Android/Sdk/cmake/3.6.3155560/bin/cmake) 

Build command failed. 

Error while executing process /home/andre/Android/Sdk/cmake/3.6.3155560/bin/cmake with arguments {-H/home/andre/Development/Edru/edru-android/app 
-B/home/andre/Development/Edru/edru-android/app/.externalNativeBuild/cmake/release/armeabi 
-GAndroid Gradle - Ninja -DANDROID_ABI=armeabi -DANDROID_NDK=/home/andre/Android/Sdk/ndk-bundle -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=/home/andre/Development/Edru/edru-android/app/build/intermediates/cmake/release/obj/armeabi 
-DCMAKE_BUILD_TYPE=Release -DCMAKE_MAKE_PROGRAM=/home/andre/Android/Sdk/cmake/3.6.3155560/bin/ninja 
-DCMAKE_TOOLCHAIN_FILE=/home/andre/Android/Sdk/ndk-bundle/build/cmake/android.toolchain.cmake 
-DANDROID_PLATFORM=android-19 -DCMAKE_CXX_FLAGS=-std=c++11 -frtti -fexceptions} 

/home/andre/Android/Sdk/cmake/3.6.3155560/bin/cmake: /usr/lib/libcrypto.so.1.0.0: version `OPENSSL_1.0.0' not found (required by /home/andre/Android/Sdk/cmake/3.6.3155560/bin/cmake) 

/home/andre/Android/Sdk/cmake/3.6.3155560/bin/cmake: /usr/lib/libssl.so.1.0.0: version `OPENSSL_1.0.0' not found (required by /home/andre/Android/Sdk/cmake/3.6.3155560/bin/cmake) 

/home/andre/Android/Sdk/cmake/3.6.3155560/bin/cmake: /usr/lib/libssl.so.1.0.0: version `OPENSSL_1.0.1' not found (required by /home/andre/Android/Sdk/cmake/3.6.3155560/bin/cmake) 

我已经检查过,并且我有openssl 1.0和openssl 1.1。我已经用全新的android-studio重新安装了我的操作系统,问题仍然存在。

感谢您的关注。

+0

我相信Android现在使用BoringSSL,而不是OpenSSL。随意更改标签。这条路径看起来不正确:'/ usr/lib/libcrypto.so.1.0.0'。这通常是主机(您的PC)的'libcrypto'(和'libssl');不是目标机器(Android设备)。 – jww

+1

昨天更新了系统后,Arch上出现同样的问题。只要运行'$/opt/android-sdk/cmake/3.6.3155560/bin/cmake',我就会收到错误消息。 – JonesV

+0

我感觉像'/ opt/android-sdk/cmake/3.6.3155560/bin/cmake'中的'cmake'二进制文件现在应该重新编译,因为我有一个新版本的libssl。但它似乎是由gradle安装的,所以我不知道我是否可以自己构建它... – JonesV

问题出在Android和0123ss之间,openssl-1.0.2.k-3。如果你在Arch Linux上是最新的,我相信你现在安装了extra/openssl-1.0 1.0.2.k-3core/openssl 1.1.0.e-1。至少这是我的情况。

在这种情况下,刚刚降级openssl-1.0 1.0.2.k-3openssl-1.0 1.0.2.k-2如下:

注意:它为我工作,但我不是一个拱门专家和降级一个包可以让你的系统上的后果。自行承担风险。

  1. 下载包here“的OpenSSL 1.0-1.0.2.k -2- x86_64.pkg.tar.xz”
  2. 降级到你刚刚下载了$ pacman -U openssl-1.0-1.0.2.k-2-x86_64.pkg.tar.xz
  3. 作为包验证,如果你运行pacman -Ss openssl-1.0,它应该告诉你:

    extra/openssl-1.0 1.0.2.k-3 [installed: 1.0.2.k-2]

当然再pacman -Syu将要再次更新openssl-1.0

UPDATE:截至今天(30-05-2017),它似乎是固定的。

+0

压力保护程序!谢谢! –

为了避免降级,您还可以像上面提到的那样下载openssl-1.0-1.0.2.k-2-x86_64.pkg.tar.xz,解压缩压缩文件并将lib/files复制到/ usr/local/lib例如 rsync -avz /tmp/openssl-1.0-1.0.2.k-2-x86_64.pkg.tar/usr/lib//usr/local/lib

然后编辑Android Studio启动脚本eg /opt/android-studio/bin/studio.sh并更改: LD_LIBRARY_PATH =“$ IDE_BIN_HOME:$ LD_LIBRARY_PATH”“$ JAVA_BIN” 至 LD_LIBRARY_PATH =“/ usr/local/lib:$ IDE_BIN_HOME:$ LD_LIBRARY_PATH”“$ JAVA_BIN“

+0

但这意味着您需要主动撤消这些更改才能获得新版本的openssl-1.0,对吧?我认为他们正在修复cmake bug(请参阅https://issuetracker.google.com/issues/37102629),所以在我的情况下,我会等待修复,然后更新openssl-1.0。但如果不想降级软件包,这是一个很好的解决方法:-)。 – JonesV

+0

Android Studio更新它时会检测到更改的启动脚本,并询问是否覆盖它。 – HDM