ndk libcurl.a 找不到openssl

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ndk libcurl.a 找不到openssl相关的知识,希望对你有一定的参考价值。

参考技术A 在安装curl时,configure doesn't find OpenSSL,按官方解释这是由于gnu autoconf tool
的bug引起,而非curl的原因,编译需指定openssl的库安装目录,如下
./configure --prefix=/usr/local/curl --with-ssl --with-zlib=/usr/local/zlib CFLAGS=-I/usr/local/ssl/include CPPFLAGS=-I/usr/local/ssl/include PKG_CONFIG_PATH=/usr/local/ssl/lib/pkgconfig LDFLAGS=-L/usr/local/ssl/lib 即可通过!

在 MacOS Sierra 上找不到 OpenSSL

【中文标题】在 MacOS Sierra 上找不到 OpenSSL【英文标题】:OpenSSL not found on MacOS Sierra 【发布时间】:2017-06-22 00:05:35 【问题描述】:

我正在尝试安装 PHP MongoDB 驱动程序,但安装失败,因为它找不到 OpenSSL。

/Users/username/mongo-php-driver/src/libmongoc/src/mongoc/mongoc-crypto-openssl.c:24:10: fatal error: 'openssl/sha.h' file not found
#include <openssl/sha.h>
         ^
1 error generated.
make: *** [src/libmongoc/src/mongoc/mongoc-crypto-openssl.lo] Error 1

我听说这与最新版本的 MacOS 有关?有没有办法,因为我确实需要安装这个驱动。

【问题讨论】:

请参阅 Apple Stack Exchange 上的 How to upgrade OpenSSL in OS X? 或 OpenSSL wiki 上的 Compilation and Installation。 如果您已经安装了 OpenSSL,这些也可能适用:How do I install pyOpenSSL on Mac OS X?、Updating openssl in python 2.7、Python referencing old SSL version、Python and OpenSSL version reference issue on OS X、Python 3.3 and Installing PyOpenSSL on a Mac、Using Python with homebrew on OS X 等... 您是如何尝试安装此驱动程序的? 【参考方案1】:

您需要使用 homebrew 安装 OpenSSL,并告诉 homebrew 创建符号链接:

brew install openssl
brew link openssl --force

如果你还没有安装自制软件,你可以通过运行这个来获得它:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

在此之前,如果您还没有安装 XCode 和 XCode 命令行工具:

xcode-select --install

【讨论】:

OpenSSL 已经安装,只是由于某种原因安装包找不到它。 当你说它已经安装时,你的意思是你用自制软件安装的吗?因为如果不是用 homebrew 安装的版本,我想你可能没有安装必要的头文件。 (即使您安装了 OpenSSL 二进制文件,这并不一定意味着您将拥有头文件;您需要确保以同时安装头文件的方式安装 OpenSSL。) 别忘了设置环境变量export LDFLAGS="-L/usr/local/opt/openssl/lib -L/usr/local/lib -L/usr/local/opt/expat/lib" &amp;&amp; export CFLAGS="-I/usr/local/opt/openssl/include/ -I/usr/local/include -I/usr/local/opt/expat/include" &amp;&amp; export CPPFLAGS="-I/usr/local/opt/openssl/include/ -I/usr/local/include -I/usr/local/opt/expat/include"【参考方案2】:

首先使用 brew 安装 libressl

brew install libressl

然后运行以下命令:

export LDFLAGS="-L/usr/local/opt/openssl/lib -L/usr/local/lib \
-L/usr/local/opt/expat/lib" && export CFLAGS="-I/usr/local/opt/openssl/include/ \
-I/usr/local/include -I/usr/local/opt/expat/include" && export \
CPPFLAGS="-I/usr/local/opt/openssl/include/ -I/usr/local/include \
-I/usr/local/opt/expat/include"

【讨论】:

【参考方案3】:

您可以使用环境变量C_INCLUDE_PATH 告诉编译器包含openssl 头文件的路径。

例如,如果你只想做一次:

sudo C_INCLUDE_PATH=/usr/local/opt/openssl/include pecl install mongo


参考:charles.lescampeurs.org

【讨论】:

【参考方案4】:

这是唯一对我有用的解决方案。

cd /usr/local/include 
ln -s ../opt/openssl/include/openssl .

来源:https://www.anintegratedworld.com/mac-osx-fatal-error-opensslsha-h-file-not-found/

【讨论】:

另一种来源形式 Github github.com/mongodb/mongo-php-driver/issues/523

以上是关于ndk libcurl.a 找不到openssl的主要内容,如果未能解决你的问题,请参考以下文章

Android NDK 系统找不到指定的路径

Android NDK,错误:(165, 0) 原因:找不到 ndk-build 二进制文件

找不到 android NDK 堆栈跟踪

“找不到兼容的并排 NDK 版本。默认为 20.0.5594570。”是啥意思?意思是?

错误:在 PATH 中找不到程序“/ndk-build.cmd”

Android NDK:找不到平台文件(标题和库)