4
我想在我的筆記本電腦中編譯這個庫ndn-cxx 。我已經嘗試過在另一臺電腦上編譯成功,但現在我得到了這個錯誤,我認爲它的相關somhow openssl。我確認我在我的筆記本電腦上安裝了openssl,使用sudo apt-cache search libssl | grep的SSL,其結果是:錯誤:在C++項目中使用HMAC_CTX時不完整的類型
- 的libssl-ocaml的 - OCaml的綁定OpenSSL的(運行時)
- 的libssl-ocaml的-dev的 - OCaml的綁定的OpenSSL
- libssl0.9.8 - SSL共享庫
- libsslcommon2 - 企業短信系統 - 通用的SSL庫
- libsslcommon2-dev的 - 企業短信系統 - 共同發展的SSL文件
試圖編譯庫時,我得到的錯誤是:
../src/security/transform/hmac-filter.cpp:49:12: error: field ‘m_context’ has incomplete type
HMAC_CTX m_context;
^
../src/security/transform/hmac-filter.cpp: In constructor
‘ndn::security::transform::HmacFilter::Impl::Impl()’:
../src/security/transform/hmac-filter.cpp:35:20: error: ‘m_context’ was not declared in this scope
HMAC_CTX_init(&m_context);
^
../src/security/transform/hmac-filter.cpp:35:29: error: ‘HMAC_CTX_init’ was not declared in this scope
HMAC_CTX_init(&m_context);
^
../src/security/transform/hmac-filter.cpp: In destructor ‘ndn::security::transform::HmacFilter::Impl::~Impl()’:
../src/security/transform/hmac-filter.cpp:40:23: error: ‘m_context’ was not declared in this scope
HMAC_CTX_cleanup(&m_context);
^
../src/security/transform/hmac-filter.cpp:40:32: error: ‘HMAC_CTX_cleanup’ was not declared in this scope
HMAC_CTX_cleanup(&m_context);
^
../src/security/transform/hmac-filter.cpp: In member function ‘ndn::security::transform::HmacFilter::Impl::operator HMAC_CTX*()’:
../src/security/transform/hmac-filter.cpp:45:13: error: ‘m_context’ was not declared in this scope
return &m_context;
^
../src/security/transform/hmac-filter.cpp:46:3: warning: control reaches end of non-void function [-Wreturn-type]
}
^
什麼操作系統和gcc版本在成功的電腦和不成功的筆記本電腦上? –
'HMAC_CTX'是一個公共數據結構。確保有問題的源文件中存在'#include'。如果包含內容存在,那麼我們需要知道您的OpenSSL副本的位置以及您如何配置項目。 OpenSSL 0.9.8真的很老,它過去的EOL。但其''包含'HMAC_CTX'。你在OS X機器上嗎? –
jww
@PaulH。我在筆記本電腦和gcc版本4.8中都使用了Ubuntu 14.04,它們都位於同一位置/ usr/lib/x86_64-linux-gnu –