编译能运行在中国电信光猫天翼网关GPON设备的程序HG6543C1
测试设备:烽火 FiberHome 厂家的光猫 HG6543C1
目标:能在 AMD64 的 Debian 11 里编译、make 出能在光猫里运行的程序
过程:
- 先确认光猫能否 telnet 或 ssh 登录
查看、确认光猫现有的软件环境,如本例的一个程序,在Linux里用file命令查看,大概知是大端的mips32平台
$file gdecms gdecms: ELF 32-bit MSB executable, MIPS, MIPS32 rel2 version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
- 下载,通过buildroot来获得相应的cross compiler toolchain 交叉编译所需的软件包
- 用toolchain包里的gcc,g++等,从软件的源码中make中可执行的二进制程序文件
本次实践中的几条命令:
/home/liujia/bt/openssl/openssl-1.1.1n/Configure linux-mips32 no-shared --cross-compile-prefix=mipsel-linux- --prefix=/home/liujia/bt/openssl/out
./b2 install abi=o32 toolset=gcc-mips --prefix=/home/liujia/bt/boost/out --with-program_options --with-system link=static
cmake .. -DENABLE_MYSQL=OFF -DSYSTEMD_SERVICE=OFF -DBoost_DEBUG=ON -DBoost_LIBRARIES="/home/liujia/bt/boost/out/lib" -DBoost_INCLUDE_DIR="/home/liujia/bt/boost/out/include" -DOPENSSL_ROOT_DIR="/home/liujia/bt/openssl/out" -DOPENSSL_LIBRARIES="/home/liujia/bt/openssl/out/lib" -DOPENSSL_INCLUDE_DIR="/home/liujia/bt/openssl/out/include" -DCMAKE_TOOLCHAIN_FILE=../toolchain.cmake
参考:
- https://stackoverflow.com/questions/44521150/buildroot-install-and-build-the-toolchain-only
- https://buildroot.org
- https://tupelo-shen.github.io/2020/10/23/MIPS%E6%9E%B6%E6%9E%84%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A38-%E5%90%91MIPS%E7%A7%BB%E6%A4%8D%E8%BD%AF%E4%BB%B6%E4%B9%8B%E5%A4%A7%E5%B0%8F%E7%AB%AF%E6%A8%A1%E5%BC%8F/
- https://github.com/xizhibei/blog/issues/141