openssl - 提示無法找到OpenSSL庫

  显示原文与译文双语对照的内容

我正在嘗試安裝一個軟體,它使用cmake安裝自己,當我在 commandlin cmake給自己。
它給了我這個文件中的錯誤,CMakeLists.txt --------行 ---> find_package ( 需要 OpenSSL ): -


 cmake.. 


-- Could NOT find Git (missing: GIT_EXECUTABLE) 


ZLib include dirs:/usr/include


ZLib libraries:/usr/lib/arm-linux-gnueabihf/libz.so


Compiling with SSL support


CMake Error at/usr/local/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:97 (message):


 Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the


 system variable OPENSSL_ROOT_DIR (missing: OPENSSL_LIBRARIES


 OPENSSL_INCLUDE_DIR)


Call Stack (most recent call first):


/usr/local/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:291 (_FPHSA_FAILURE_MESSAGE)


/usr/local/share/cmake-2.8/Modules/FindOpenSSL.cmake:313 (find_package_handle_standard_args)


 CMakeLists.txt:436 (find_package)



下面是 CMakeLists.txt, 文件的一部分,錯誤是 comming: -----


#


# OpenSSL


#


if (WITH_SSL)


 message("Compiling with SSL support")



 if (USE_CYASSL)


 # Use CyaSSL as OpenSSL replacement.


 # TODO: Add a find_package command for this also.


 message("CyaSSL include dir: ${CYASSL_INCLUDE_DIRS}")


 message("CyaSSL libraries: ${CYASSL_LIB}")



 # Additional to the root directory we need to include


 # the cyassl/subdirectory which contains the OpenSSL


 # compatability layer headers.


 foreach(inc ${CYASSL_INCLUDE_DIRS})


 include_directories(${inc} ${inc}/cyassl)


 endforeach()



 list(APPEND LIB_LIST ${CYASSL_LIB})


 else()


 # TODO: Add support for STATIC also.


 find_package(OpenSSL REQUIRED)



 message("OpenSSL include dir: ${OPENSSL_INCLUDE_DIR}")


 message("OpenSSL libraries: ${OPENSSL_LIBRARIES}")



 include_directories(${OPENSSL_INCLUDE_DIR})


 list(APPEND LIB_LIST ${OPENSSL_LIBRARIES})


 endif()


endif(WITH_SSL)



http://www.opensource.apple.com/source/OpenSSL/OpenSSL-7.1/openssl/INSTALL?txt
現在我已經安裝了 Openssl,這裡是 -----


ssl header is here -->/usr/local/ssl/include/openssl/


ssl library is here -->/usr/local/ssl/lib/libssl.a


/usr/local/ssl/lib/libcrypto.a


openssl is here -->/usr/local/ssl/bin



我已經將我的。profile設置為:-----


export LD_LIBRARY_PATH=/usr/local/ssl/include/openssl:/usr/lib:/usr/local/lib:/usr/lib/pkgconfig:/usr/local/include/wx-2.8/wx:$LD_LIBRARY_PATH


export PKG_CONFIG_PATH=/usr/lib/pkgconfig


export OPENSSL_ROOT_DIR=/usr/local/ssl


export OPENSSL_LIBRARIES=/usr/local/ssl/lib/



PATH =/usr/local/ssl/bin:$PATH



如何解決這裡錯誤?

編輯:- -
獲取這裡錯誤


/usr/local/lib/libcrypto.a(dso_dlfcn.o): In function `dlfcn_globallookup':


dso_dlfcn.c:(.text+0x10): undefined reference to `dlopen'


dso_dlfcn.c:(.text+0x24): undefined reference to `dlsym'


dso_dlfcn.c:(.text+0x30): undefined reference to `dlclose'



时间: 原作者:

這是個常見的誤解: load不需要 環境變數 來知道庫和包含目錄的位置。

因為,找不到你的OpenSSL lib和包含目錄,所以你必須手動告訴他它們在調用它時的位置。 使用選項 -D 從 命令行 中設置常量。 你將需要設置常量 OPENSSL_ROOT_DIROPENSSL_LIBRARIES,因為它們是觸發錯誤的一個。


cmake -DOPENSSL_ROOT_DIR=/usr/local/ssl -DOPENSSL_LIBRARIES=/usr/local/ssl/lib



原作者:
...