參考的方法
在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
- 安裝openssl