GL-XE300路由器的Openwrt软件编译方法和一些坑

其实我一般没有单独编译openwrt软件ipk文件的需求,强迫症肯定是编译固件的时候直接都打包进去的。但是最近买了个GL-XE300路由器,这个其实就是GL-MiFi的升级版(虽然CPU依然挺弱的),官方的固件虽然是基于openwrt的,但openwrt官方并没有这个硬件的支持,而且gl-inet自己做了一个自动4G拨号的包还是挺好用的,所以就想在官方固件的基础上编译一些自己需要软件包就行了。

使用Openwrt的SDK就行了

不需要去使用gl-inet的官方sdk,用openwrt的19.07(因为官方固件目前是基于这个版本的)版的SDK就可以了,这里可以下载到适合我们路由器的版本,注意你自己用的路由器是什么CPU的,别瞎跟着这个链接下载。

Git的SSL验证失败问题

从某些openwrt的服务器git clone数据的时候会发现对方服务器的SSL证书失效了,导致clone失败,直接暂时关闭Git的SSL验证就好了,或者写入.bashrc也行:

export GIT_SSL_NO_VERIFY=1 

WSL2的PATH变量问题

WSL2已经是我的linux主力发行版了,毕竟只需要打开一个terminal就可以使用几乎纯linux的环境还是挺方便的。但是WSL2默认会在PATH变量中包含Windows的PATH变量,这可能会导致一些同名工具的冲突,所以最好排除掉windows的PATH变量。 方法如下:

sudo vi /etc/wsl.conf
[interop]
appendWindowsPath = false

helloworld项目里的v2ray-core这些代码编译有问题

不是你的问题,好像是他们包组织里缺了些东西,毕竟本来就只是搜集一下,并不是代码主内容,换成下面这这个库里的v2ray-core就可以顺利编译了。

mkdir -p package/small
 git clone https://github.com/kenzok8/small.git package/small

golang版本太低导致v2ray-core编译失败

要换成最新的版本,golang版本太低不行的:

./scripts/feeds update -a

pushd feeds/packages/lang
rm -fr golang && svn co https://github.com/openwrt/packages/trunk/lang/golang
popd

最后

./scripts/feeds install -a

同样的道理,你如果想更新别的软件到最新版本的代码,而不是使用SDK中的老版本,也可以用上面的方法,从trunk中更新代码替换掉。 不要忘记最后的feeds install,这步才是真正把update出来的代码copy到package目录下用于编译的。

复制一个upx工具

v2ray体积比较大,编译的最后一部就是upx压缩,所以我们要把host上的upx copy一份到sdk目录里给编译过程使用。 先通过which命令找出upx所在的位置。

cp /usr/bin/upx staging_dir/host/bin/

先编译一个luci-base

编译luci-app前先编译一个luci-base,后续的编译过程会用到这其中产生的一些工具,虽然你用不上,但不这样就基本上会失败。

make package/feeds/luci/luci-base/compile V=s

ipk文件在哪?

在bin/packages/mips_24kc/目录下。

能提供编译好的ipk文件吗?