在VM虚拟机里的Ubuntu20.04.1下使用 OpenWrt14.07 OpenWrt-SDK-ramips-for-linux-交叉编译n2n 3.0

文章描述了在Ubuntu20.04的VM虚拟机中,如何为openwrt14.07(mt7688AN/mt7628AN模块)搭建交叉编译环境,以编译N2N3.0的edge和supernode。步骤包括安装必要软件,下载SDK和openssl源码,配置环境变量,编译openssl库,以及使用CMake进行N2N源码的交叉编译。

mt7688AN mt7628AN 模块在VM虚拟机里的Ubuntu20.04.1下使用 openwrt14.07-SDK交叉编译器编译N2N 3.0

首先要感谢这几篇博文
https://blog.csdn.net/haoxia01/article/details/105506868
https://blog.csdn.net/chuxiaobobo/article/details/124240855
https://blog.csdn.net/weixin_36016076/article/details/116257403

在网上找了好多文章,但没有一篇文章真正解决了我的问题。

因买的openwrt模块里的openwrt是14.07。 只能在这版本下用交叉编译方式编译出可执行文件,然后在WIFI模块里运行。
那怎么搭建mt7688AN mt7628AN的交叉编译环境搭建,可以编译出完整的N2N 3.0的执行文件edge和supernode呢??

首先需要资源
1.VM下的Ubuntu20.04.1,已经能正常编译openwet18.6以上源码的编译环境。差不多要安装
sudo apt-get update
sudo apt-get upgrade
sudo apt install gcc g++ unzip make libncurses-dev mkisofs

2.下载必要的源码,工具链,14.07 sdk交叉编译工具 ,都是在windows环境下下载的,然后复制到VM虚拟机下Ubuntu20.04.1的主目录下备用。

到**https://archive.openwrt.org/barrier_breaker/14.07/ramips/mt7620a/**下载交叉编译器
在最下面可以下载到OpenWrt-SDK-ramips-for-linux-x86_64-gcc-4.8-linaro_uClibc-0.9.33.2.tar.bz2。
到:http://distfiles.macports.org/openssl/ 下载openssl-1.0.2q.tar.gz
不要下载错了,不是最新的就是好的,我就掉坑里爬了好几天的。

下载N2N源码 https://github.com/ntop/n2n里面我找的是3.0版本下载的是 tar.gz文件在这里插入图片描述
3.首先搭建openwrt基本交叉编译环境。
新建一个op文件夹,解压缩OpenWrt-SDK-ramips-for-linux-x86_64-gcc-4.8-linaro_uClibc-0.9.33.2.tar.bz2到这个文件夹里,重命名为sdk。
把/op/sdk/staging_dir/toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2文件夹重命名为mipsel。为了后面添加路径时可以短一点。

在这里插入图片描述
接着添加环境比变量
op/sdk/staging_dir/mipsel/bin文件夹下右击打开终端,
输入命令 pwd
命令pwd获取绝对地址/home/(你的用户名)/op/sdk/staging_dir/mipsel/bin
注意你环境的用户名,我这时tom 接着使用命令 gedit ~/.bashrc
在最后加上
export PATH=$PATH:/home/(你的用户名)/op/sdk/staging_dir/mipsel/bin
export STAGING_DIR=/home/(你的用户名)/op/sdk/staging_dir
改好后保存。退出。然后执行下面命令

source ~/.bashrc

echo $PATH /usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/sbin:/usr/sbin:/home/(你的用户名)/op/sdk/staging_dir/mipsel/bin

4.测试交叉编译环境是否生效了。
然后右击-》新建一个ctest文件夹,进入ctest文件夹,打开终端输入命令
gedit hello.c

新建一个hello.c文件,内容是:

#include<stdio.h>
int main(int argc,char* argv[])
{
puts("Hello World!");
return 0;
}

保存退出,可以看到文件夹里的创建的hello.c文件了。
后面在输入命令
mipsel-openwrt-linux-gcc -o hello hello.c
你能看到在ctest文件夹里有两个文件。那么恭喜你,openwrt-sdk交叉编译环境初步搭建好了。
在这里插入图片描述
5.因为编译n2n必须要有openSSL库,但OpenWrt-SDK-ramips-for-linux-里没有。所有还要添加openSSL支持。
动作1.把主目录下的openssl-1.0.2q.tar.gz解压缩到op文件夹下
在这里插入图片描述
进入openssl-1.0.2q文件夹,打开终端,开始编译加载openSSL。
设置生成路径,不需要生成汇编,输入命令
./config no-asm shared --prefix=/home/(你的用户名)/op/sdk/staging_dir/mipsel

然后打开Makefile文件,修改几个地方,把原来gcc的改成mipsel-openwrt-linux-gcc

CC= mipsel-openwrt-linux-gcc

AR= mipsel-openwrt-linux-ar $(ARFLAGS) r
RANLIB= mipsel-openwrt-linux-ranlib

NM= mipsel-openwrt-linux-nm

MAKEDEPPROG= mipsel-openwrt-linux-gcc

同时,删除-m64,两个地方需要删除。改好后按esc 输入 保存:w ,退出 :q
文件里改动的地方大概就这些!!

CC= mipsel-openwrt-linux-gcc
CFLAG= -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -D_REENTRANT  这里的-m64被删除了 -DDSO_DLFCN -DHAVE_DLFCN_H -DL_ENDIAN -O3 -Wall
DEPFLAG= -DOPENSSL_NO_EC_NISTP_64_GCC_128 -DOPENSSL_NO_GMP -DOPENSSL_NO_JPAKE -DOPENSSL_NO_LIBUNBOUND -DOPENSSL_NO_MD2 -DOPENSSL_NO_RC5 -DOPENSSL_NO_RFC3779 -DOPENSSL_NO_SCTP -DOPENSSL_NO_SSL_TRACE -DOPENSSL_NO_SSL2 -DOPENSSL_NO_STORE -DOPENSSL_NO_UNIT_TEST -DOPENSSL_NO_WEAK_SSL_CIPHERS
PEX_LIBS=
EX_LIBS= -ldl
EXE_EXT=
ARFLAGS=
AR= mipsel-openwrt-linux-ar $(ARFLAGS) r
RANLIB= mipsel-openwrt-linux-ranlib
RC= windres
NM= mipsel-openwrt-linux-nm
PERL= /usr/bin/perl
TAR= tar
TARFLAGS= --no-recursion
MAKEDEPPROG= mipsel-openwrt-linux-gcc
LIBDIR=lib64
.......
SHARED_LDFLAGS=   这里的-m64被删除了。

修改好文件后接着执行命令:
make
在这里插入图片描述
make install
在这里插入图片描述
编译过程中没有报错就说明你把动作全做对了。在mipsel-openwrt里多了libssl.so了。
在这里插入图片描述

6.最后就是编译n2n 3.0源码了。
n2n-3.0.tar.gz 右击-》提取到此处。会出现n2n-3.0文件夹,进n2n-3.0文件夹,

CMake构建,我是用文本打开 CMakeLists.txt,也可以vim打开,
在开头加入:

SET(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_CROSSCOMPILING TRUE)
SET(CMAKE_CROSSCOMPILER "mipsel-openwrt-linux-")
SET(CMAKE_C_COMPILER "${CMAKE_CROSSCOMPILER}gcc")
SET(CMAKE_CXX_COMPILER "${CMAKE_CROSSCOMPILER}g++")

CMakeLists里就长这样了。保存退出。
在这里插入图片描述
开始编译代码,在n2n 3.0 文件夹下右击-》打开终端 执行以下命令:
mkdir build
cd build
cmake … 报错。傻了????提示没有安装,根据提示安装cmake
在这里插入图片描述
sudo apt install cmake
查一下安装版本
cmake --version 获取版本是cmake version 3.16.3

接着执行
cmake …
在这里插入图片描述
make 编译程序就这样的提示。
在这里插入图片描述

在这里插入图片描述
看了下edge,supmode文件,还是有点大,怎么办?
可以 mipsel-openwrt-linux-strip edge supernode 一下,稍微减小了一些体积。

后面就不描述怎么折腾了,请大神自己复制到openwrt模块里的/usr/bin/文件夹下。
还有要修改权限,在/usr/bin/文件夹下执行sudo chmod 777 edge
要不然执行命令会不执行的,
edge -u 0 -g 0 -d n2n0 -c myn2ntest -k mypassword -a static:192.168.100.1 -l 服务器IP:端口号 -r

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值