n2n koolshare lede x64 交叉编译
首先非常感谢这篇博文的原作者:http://www.lucktu.com/archives/778.html
安装cmake3.6
编译新版的n2n需要用到cmake3版本,而centos7的yum安装的cmake版本为2.8,需要手工安装cmake。
首先卸载cmake
yum remove cmake
下载cmake3.6 https://cmake.org/files/v3.6/cmake-3.6.0-Linux-x86_64.tar.gz
下载的不是安装包,而是可执行文件,解压后将cmake目录添加到PATH
vim /etc/bashrc
#在文件末尾添加
export PATH=$PATH:/usr/local/cmake3.6/bin
下载sdk(toolchain)
下载openwrt相应版本的sdk,koolshare LEDE x64最新版的sdk为 LEDE17.01.6
下载地址为 http://downloads.openwrt.org/releases/17.01.6/targets/x86/64/lede-sdk-17.01.6-x86-64_gcc-5.4.0_musl-1.1.16.Linux-x86_64.tar.xz
解压缩到目录 /home/wjm/compiler/sdk/lede17.01.5_gcc-5.4.0
交叉编译openssl
下载地址:http://distfiles.macports.org/openssl/
解压缩到目录 /home/wjm/compiler/lib/openssl-1.1.1d
进入openssl目录,设置生成路径,不需要生成汇编
./config no-asm shared --prefix=/home/wjm/compiler/sdk/lede17.01.5_gcc-5.4.0/staging_dir/toolchain
接着修改 MakeFile 文件 ,指定交叉编译的gcc
CROSS_COMPILE=x86_64-openwrt-linux-
CC=$(CROSS_COMPILE)gcc
CXX=$(CROSS_COMPILE)g++
CPPFLAGS=
CFLAGS=-Wall -O3
CXXFLAGS=-Wall -O3
LDFLAGS=
EX_LIBS=
同时,删除-m64,两个地方需要删除。
CNF_CFLAGS=-pthread -m64
CNF_CXXFLAGS=-std=c++11 -pthread -m64
编译安装
make
sudo make install
交叉编译n2n
下载源代码,我打算编译的是v2s版本,源码地址为https://github.com/meyerd/n2n.git下的n2n_v2
git clone https://github.com/meyerd/n2n.git
进入n2n_v2目录,使用cmake构建Makefile
修改CMakeLists.txt在最上部SET两个变量
SET(CMAKE_CXX_COMPILER "x86_64-openwrt-linux-g++")
SET(CMAKE_C_COMPILER "x86_64-openwrt-linux-gcc")
project(n2n)
cmake_minimum_required(VERSION 2.6)
修改环境变量,可以根据需要将环境变量添加到bashrc中或者仅在当前shell中执行(如果只是临时编译)
添加STAGING_DIR,修改PATH,将toolchain的bin添加到PATH
export STAGING_DIR=/home/wjm/compiler/sdk/lede17.01.5_gcc-5.4.0/staging_dir
export PATH=$STAGING_DIR/toolchain/bin:$PATH
在源代码目录新建build目录,用于存储编译结果
mkdir build
运行cmake,指定编译类型,并将安装目录指定为build
cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX=build
make
sudo make install