架构x86_64的未定义符号:" _SSLv2_ ..."

时间:2016-03-24 12:19:19

标签: c++ openssl ld telegram-bot

我正在尝试用C ++(https://github.com/reo7sp/tgbot-cpp#samples)为Telegram Bot库构建一个小例子,但是在链接时我得到了这个输出:

Undefined symbols for architecture x86_64:
  "_SSLv2_client_method", referenced from:
      boost::asio::ssl::context::context(boost::asio::ssl::context_base::method) in libTgBot.a(HttpClient.cpp.o)
  "_SSLv2_method", referenced from:
      boost::asio::ssl::context::context(boost::asio::ssl::context_base::method) in libTgBot.a(HttpClient.cpp.o)
  "_SSLv2_server_method", referenced from:
      boost::asio::ssl::context::context(boost::asio::ssl::context_base::method) in libTgBot.a(HttpClient.cpp.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

使用此命令:

g++ -std=c++11 main.cpp -l boost_system -l boost_iostreams -l boost_unit_test_framework -l boost_exception -l TgBot -l pthread -l ssl -l crypto -L/usr/local/opt/openssl/lib -I/usr/local/opt/openssl/include

我安装了openssl 1.0.2:我必须得到2.x版本吗?我无法用自制软件找到它(我的系统是OSX 10.9.5)...对新手问题感到抱歉。

1 个答案:

答案 0 :(得分:0)

  1. brew install openssl

  2. 打开~/.bash_profile

  3. 添加

export PATH="/usr/local/opt/openssl/bin:$PATH"
export LDFLAGS="-L/usr/local/opt/openssl/lib"
export CPPFLAGS="-I/usr/local/opt/openssl/include"
  1. 来源〜/ .bash_profile