openwrt路由器添加编译器gcc和go语言
文章目录
最近需要在路由器上搞点事情,
开始我是直接编译openwrt,将go和gcc都打包.
结果固件103M,强制烧录到我路由器上,(超容量了)把系统挂了.自己稍微弄下路由器恢复了.
后面主要是交叉编译环境.在windows或者ubuntu上交叉编译项目,然后将可执行文件拷到路由器上用.
后面我分别打包了一个gcc固件,一个go语言固件.
发现编译太慢太慢.于是放弃路由器直接编译!
go语言支持
go语言本身自带交叉编译环境.不需要怎么设置.
关于go安装到windows不说明
在windows上交叉编译一个v2ray-core到路由器.
设置交叉编译环境变量
使用window自带的powershell,设置环境变量
$env:CGO_ENABLED=0
$env:GOOS="linux"
$env:GOARCH="mips"
$env:GOMIPS="softfloat"
我的路由器平台是mips
编译v2ray-core
首先下载各种源
go get -u -v v2ray.com/core/...
下载后
进入 v2ray代码目录(默认在个人文件夹下面有个go目录, )
C:\Users\USERNAME\go\pkg\mod\v2ray.com\core@v4.19.1+incompatible>
编译
go build -o v2ray -trimpath -ldflags "-s -w" ./main
go build -o v2ctl -trimpath -ldflags "-s -w" -tags confonly ./infra/control/main
编译后,在当前目录有生成"v2ray" 和 "v2ctl"两个文件.
拷贝到路由器上去,加X执行权限,就可以可以执行.
参考
https://www.v2fly.org/developer/intro/compile.html#windows
https://github.com/v2ray/discussion/issues/756
https://blog.csdn.net/qq531456898/article/details/80095707
gcc支持
gcc要在编译openwrt的时候选择编译.
先装openwrt编译环境,不不说明.
make menuconfig设置
编译导出交叉编译工具
勾选
Package the OpenWrt-based Toolchain
编译出来,在bin/targets/平台/
我的是
openwrt-toolchain-ath79-nand_gcc-8.4.0_musl.Linux-x86_64.tar.bz2
解压工具包到/opt目录
sudo tar jxvf openwrt-toolchain-ath79-nand_gcc-8.4.0_musl.Linux-x86_64.tar.bz2 -C /opt/
编辑并执行配置工具,进入解压后目录里面的bin目录
vi mipsel-openwrt-linux-musl-wrapper.sh
TOOLCHAIN_BIN_DIR="$REALNAME_DIR/"
##添加这下面一行
export STAGING_DIR="$REALNAME_DIR/../../"
设置环境变量,并生效
我的路径是这样,其他路径修改下即可.
export PATH=$PATH:/opt/openwrt-toolchain-ath79-nand_gcc-8.4.0_musl.Linux-x86_64/toolchain-mips_24kc_gcc-8.4.0_musl/bin
source /etc/profile
然后用
mips-openwrt-linux-musl-gcc
编译c项目即可生成可执行文件,复制到路由器并加执行权限,就可以执行.
参考
https://blog.csdn.net/lingyizhangfankai/article/details/47007811