內網穿透工具N2N在MAC編譯找不到openssl和Unable to open tap device和library not found for -lcrypto問題處理

參考的方法

在Linux上順利通過,在MAC上卻遇到如下問題:

問題一

[me@build]$ cmake -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl/ ../
-- The C compiler identification is AppleClang 9.1.0.9020039
-- The CXX compiler identification is AppleClang 9.1.0.9020039
-- Check for working C compiler: /Library/Developer/CommandLineTools/usr/bin/cc
-- Check for working C compiler: /Library/Developer/CommandLineTools/usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /Library/Developer/CommandLineTools/usr/bin/c++
-- Check for working CXX compiler: /Library/Developer/CommandLineTools/usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
CMake Error at CMakeLists.txt:41 (find_package):
  By not providing "Findopenssl.cmake" in CMAKE_MODULE_PATH this project has
  asked CMake to find a package configuration file provided by "openssl", but
  CMake did not find one.

  Could not find a package configuration file provided by "openssl" with any
  of the following names:

    opensslConfig.cmake
    openssl-config.cmake

  Add the installation prefix of "openssl" to CMAKE_PREFIX_PATH or set
  "openssl_DIR" to a directory containing one of the above files.  If
  "openssl" provides a separate development package or SDK, be sure it has
  been installed.


-- Configuring incomplete, errors occurred!
See also "/Users/huyuanyuan/WORK/PublicTools/n2n/n2n-master/n2n_v2_mac/build/CMakeFiles/CMakeOutput.log".

後來經過苦苦google,終於google到一篇看似很不靠譜的文
https://lists.nongnu.org/archive/html/flexisip-developers/2015-11/msg00001.html
他說:
"openssl" should be "OpenSSL"
去CMakeList.txt裏面一看,果然有一行是:

if(APPLE)
find_package(openssl REQUIRED)
endif(APPLE)

把這個openssl改成OpenSSL之後再編譯,果然過了。

問題二

編譯通過之後使用Edge的時候又出現如下錯誤
ERROR: Unable to open tap device
解決在這個帖子裏第三方
即通過brew安裝tuntap
brew cask install tuntap
安裝之後順利運行

問題三

升級到Macos 10.14 mojave之後,又特麼出問題了,MAC真是不讓人省心
錯誤提示如下:
library not found for -lcrypto
google一圈之後在這個帖子裏面找到可參考答案https://github.com/vernemq/vernemq/issues/206
具體做法爲,在CMakeLists.txt裏面 把
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -I${OPENSSL_INCLUDE_DIR}")
替換爲
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -L${OPENSSL_ROOT_DIR}/lib -I${OPENSSL_INCLUDE_DIR}")
即添加了-L/usr/local/opt/openssl/lib這個選項

總結:

openssl這個問題不知道爲啥別人沒有這個問題,可能是因爲我剛剛重裝了系統,並且把硬盤格式化成了區分大小寫的格式。

編譯總結:

Linux方法:

  • 下載n2n,編譯安裝n2n_v2
    cmake .
    make
    sudo ln -s /home/yuan/home/WORK/PublicTools/n2n/n2n-master/n2n_v2/edge /usr/bin/edge

MAC方法 官方

  • 下載n2n,編譯安裝n2n_v2
    • 安裝openssl
      brew install openssl
    • 安裝cmake
      brew install cmake
    • 安裝tuntap
      brew cask install tuntap
    • (筆者自己添加的步驟)CMakeList.txt中的find_package(openssl REQUIRED)改爲find_package(OpenSSL REQUIRED)
    • 編譯
      mkdir build
      cd build
      cmake -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl ..
      make
      sudo ln -s /home/yuan/home/WORK/PublicTools/n2n/n2n-master/n2n_v2_mac/build/edge /usr/bin/edge
      
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章