Compiling the Nim program on the OpenWRT router across platforms on Linux
Nim is a very fun language, let's see how to run a program written by Nim on a router.
Ready to work
- Install the Nim compiler, if you use Debian GNU/Linux,
apt install nim
you can - A mipsel OpenWRT router
Write a Nim program
Come to Hello World:
echo "hello world"
Prepare OpenWRT's build toolchain
aria2c 'http://archive.openwrt.org/chaos_calmer/15.05.1/ramips/mt7621/OpenWrt-SDK-15.05.1-ramips-mt7621_gcc-4.8-linaro_uClibc-0.9.33.2.Linux-x86_64.tar.bz2'
tar xvf OpenWrt-SDK-15.05.1-ramips-mt7621_gcc-4.8-linaro_uClibc-0.9.33.2.Linux-x86_64.tar.bz2
Configure the PATH environment variable to let the Nim compiler find the build toolchain
export PATH=/dev/shm/OpenWrt-SDK-15.05.1-ramips-mt7621_gcc-4.8-linaro_uClibc-0.9.33.2.Linux-x86_64/staging_dir/toolchain-mipsel_1004kc+dsp_gcc-4.8-linaro_uClibc-0.9.33.2/bin/:$PATH
Start compiling!
nim -d:release --opt=size -d:ssl --cpu:mipsel --os:linux --gcc.exe:mipsel-openwrt-linux-gcc --gcc.linkerexe:mipsel-openwrt-linux-gcc c helloworld.nim
After compiling on my machine, 187KB, compared to the dozens of MB compiled by Golang, it is too light,
If you want to be small, you can
upx
compress it with an artifact:upx -9 --best --lzma helloworld
This is only 70KB, for a router with only a few MB of ROM, it is a good news.
评论
发表评论