无法在macOS-Sierra上使用openssl

时间:2017-07-21 17:56:44

标签: macos cmake openssl homebrew macos-sierra

我想在我的Mac上使用CLion(CMake)运行openssl。

使用自制软件安装openssl

brew install openssl

但是CLion仍无法找到openssl。过去可以使用

brew link openssl

但似乎今天被自制软件拒绝了。

Warning: Refusing to link: openssl
Linking keg-only openssl means you may end up linking against the insecure, 
deprecated system OpenSSL while using the headers from Homebrew's openssl.
Instead, pass the full include/library paths to your compiler e.g.:
   -I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib

然后我在CLion(CMakeLists.txt)中使用了以下cmake选项

set(I "/usr/local/opt/openssl/include")
set(L "/usr/local/opt/openssl/lib")
include_directories(${I})

但我仍然得到:

Undefined symbols for architecture x86_64:
  "_EVP_DigestSignFinal", referenced from:
Undefined symbols for architecture x86_64:
  "_EVP_DigestSignFinal", referenced from:
      OpenSSL::signMsg(Buffer, Buffer, SignOptions) in libMyLib.a(ssl_state.cpp.o)
      OpenSSL::signMsg(Buffer, Buffer, SignOptions) in libMyLib.a(ssl_state.cpp.o)

我能找到的几乎所有关于这个主题的内容都是关于旧版本的macOS,但Apple已经从openssl 0.9.8中删除了开发标题,因此很多指南都不再适用了。

1 个答案:

答案 0 :(得分:0)

这似乎是链接的问题。我使用 Macports 代替 Homebrew ,但也使用MacOS Sierra。

由于我无法查看您的代码而您没有提供最低限度的工作示例,因此我使用了:https://github.com/Andersbakken/openssl-examples.git

与您类似,我将以下行添加到CMakeLists.txt

set(I "/opt/local/include")
set(L "/opt/local/lib")
include_directories(${I})

它对我来说很好用:

cmake .
make

您是否已经验证了必要的文件在路径下实际可用,您放入了CMakeLists.txt

你试过了吗?

brew info openssl