在WSL2中构建龙芯MIPS编译环境并编译应用软件

因为各种原因,一台搭载了龙芯3A4000处理器的台式电脑将成为我未来半年的日常工作机。由于只能连接单位内网,这台电脑甚至无缘于本就乏善可陈的官方软件源,寥寥几款随机附带的软件就是它的全部,连浏览器都是没有账号密码记录功能的阉割版,更别说什么Visual Studio Code、剪贴板管理、全文检索软件了。

但这难不倒我们勤劳勇敢的中国人民(手动滑稽)龙芯虽然性能孱弱,技术路线也一直自绝于主流,但它上面运行的毕竟还是Linux系统。通过编译软件源码,我们可以自行制作所需软件,让这个被抛弃的平台拥有完整的一生。

我自己本职工作只是个搞A4雕花手艺的文字工作者,仅有的开发经验也是局限在Windows平台的前端和.NET技术栈上,没有多少跨平台经验,文中如有不妥,请多指教。

构建WSL2交叉编译环境

启用WSL2

为特定架构处理器适配应用,最简单的办法就是搞台这个型号的电脑直接在上面编译源码。但一台龙芯3A4000的主机要将近2000块钱,都够买台无头骑士版的MacBook了,性能则完全没有可比性。自己毕竟不是吃这碗饭的人,所以还是选择在熟悉的Windows平台上借助WSL2进行编译。主要步骤如下:

  1. 在BIOS内启用处理器的虚拟化功能。如果不知道是否已启用,可以在任务管理器的“性能”一栏看到相关信息
  2. 在“启用或关闭Windows功能”里勾选“适用于Linux的Windows子系统”以及“Windows虚拟机监控程序平台”,并重启电脑
  3. 在Windows11的应用商店内下载安装一个喜欢的Linux发行版,最好主流一些,我选的是Ubuntu
  4. 在Windows Terminal或开始菜单里选择Ubuntu,输入用于Linux子系统的账号密码,完成系统安装步骤
  5. (可选)如果前一步发生错误,在Windows Terminal内执行"wsl --update"命令,更新Linux子系统版本

下载编译工具链

龙芯在开源领域耕耘多年,编译工具链是相对完善的。可以访问项目官网获取所需的生态链工具。对跨平台的交叉编译而言,只需要下载GCC编译器即可。

官网目前主要提供了两个架构版本的GCC,一个是适用于LoongArch架构的GCC 8.3工具链,一个是适用于MIPS架构的GCC 8.3或7.3工具链。LoongArch架构面向龙芯3A5000之后的新处理器,我的3A4000及更老的龙芯都是MIPS架构,所以直接下载MIPS的二进制版即可。下载部署步骤如下

  1. 在WSL2的系统中执行wget http://ftp.loongnix.cn/toolchain/gcc/release/mips/gcc8/mips-loongson-gcc8-linux-gnu-2021-02-08.tar.gz,下载工具链压缩包
  2. 下载完成后执行tar -xzvf mips-loongson-gcc8-linux-gnu-2021-02-08.tar.gz,进行解压缩
  3. 将工具链移到方便的路径内,例如mv mips-loongson-gcc8-linux-gnu-2021-02-08 /usr/local
  4. 为工具链设置环境变量,其中PATH根据你的工具链文件夹路径设置,我的路径是/usr/local/mips-loongson-linux-gnu/bin。如果前面都按我前面的步骤来,把第三步的文件夹名称改为mips-loongson-linux-gnu即可
export PATH=/usr/local/mips-loongson-linux-gnu/bin:$PATH
export CC=mips-linux-gnu-gcc
export CXX=mips-linux-gnu-g++
export AR=mips-linux-gnu-ar
export RANLIB=mips-linux-gnu-ranlib
export STRIP=mips-linux-gnu-strip

为了方便起见,可以将这些环境变量的设置添加到终端配置文件(例如 ~/.bashrc 或 ~/.bash_profile)中。这样,每次打开终端时,这些环境变量将自动加载。

着手编译程序

完成上述设置后,可以着手编译程序了。先编译一个简单的zlib试一试!

  1. 下载源码git clone https://github.com/madler/zlib.git
  2. 解压后进入项目目录cd zlib
  3. 配置环境mkdir buildcd build,cmake -DCMAKE_C_COMPILER=mips-linux-gnu-gcc -DCMAKE_INSTALL_PREFIX=/opt/mips/zlib ../
  4. 编译及安装make -j4make install

扫兴的结尾

经过实践发现,单位电脑的权限管理比我想得更为严格。别说自己编译的程序了,就是在原机上写个Python或bash脚本,没有签名都不让运行。感谢银河麒麟的KEYSEC机制,让体制内的工作效率进一步下降,流汗黄豆……

posted @ 2024-02-16 22:44  启真湖畔的佐时雨  阅读(200)  评论(0编辑  收藏  举报