因为各种原因,一台搭载了龙芯3A4000处理器的台式电脑将成为我未来半年的日常工作机。由于只能连接单位内网,这台电脑甚至无缘于本就乏善可陈的官方软件源,寥寥几款随机附带的软件就是它的全部,连浏览器都是没有账号密码记录功能的阉割版,更别说什么Visual Studio Code、剪贴板管理、全文检索软件了。
但这难不倒我们勤劳勇敢的中国人民(手动滑稽)龙芯虽然性能孱弱,技术路线也一直自绝于主流,但它上面运行的毕竟还是Linux系统。通过编译软件源码,我们可以自行制作所需软件,让这个被抛弃的平台拥有完整的一生。
我自己本职工作只是个搞A4雕花手艺的文字工作者,仅有的开发经验也是局限在Windows平台的前端和.NET技术栈上,没有多少跨平台经验,文中如有不妥,请多指教。
构建WSL2交叉编译环境
启用WSL2
为特定架构处理器适配应用,最简单的办法就是搞台这个型号的电脑直接在上面编译源码。但一台龙芯3A4000的主机要将近2000块钱,都够买台无头骑士版的MacBook了,性能则完全没有可比性。自己毕竟不是吃这碗饭的人,所以还是选择在熟悉的Windows平台上借助WSL2进行编译。主要步骤如下:
- 在BIOS内启用处理器的虚拟化功能。如果不知道是否已启用,可以在任务管理器的“性能”一栏看到相关信息
- 在“启用或关闭Windows功能”里勾选“适用于Linux的Windows子系统”以及“Windows虚拟机监控程序平台”,并重启电脑
- 在Windows11的应用商店内下载安装一个喜欢的Linux发行版,最好主流一些,我选的是Ubuntu
- 在Windows Terminal或开始菜单里选择Ubuntu,输入用于Linux子系统的账号密码,完成系统安装步骤
- (可选)如果前一步发生错误,在Windows Terminal内执行"wsl --update"命令,更新Linux子系统版本
下载编译工具链
龙芯在开源领域耕耘多年,编译工具链是相对完善的。可以访问项目官网获取所需的生态链工具。对跨平台的交叉编译而言,只需要下载GCC编译器即可。
官网目前主要提供了两个架构版本的GCC,一个是适用于LoongArch架构的GCC 8.3工具链,一个是适用于MIPS架构的GCC 8.3或7.3工具链。LoongArch架构面向龙芯3A5000之后的新处理器,我的3A4000及更老的龙芯都是MIPS架构,所以直接下载MIPS的二进制版即可。下载部署步骤如下
- 在WSL2的系统中执行
wget http://ftp.loongnix.cn/toolchain/gcc/release/mips/gcc8/mips-loongson-gcc8-linux-gnu-2021-02-08.tar.gz
,下载工具链压缩包 - 下载完成后执行
tar -xzvf mips-loongson-gcc8-linux-gnu-2021-02-08.tar.gz
,进行解压缩 - 将工具链移到方便的路径内,例如
mv mips-loongson-gcc8-linux-gnu-2021-02-08 /usr/local
- 为工具链设置环境变量,其中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试一试!
- 下载源码
git clone https://github.com/madler/zlib.git
- 解压后进入项目目录
cd zlib
- 配置环境
mkdir build
,cd build
,cmake -DCMAKE_C_COMPILER=mips-linux-gnu-gcc -DCMAKE_INSTALL_PREFIX=/opt/mips/zlib ../
- 编译及安装
make -j4
,make install
扫兴的结尾
经过实践发现,单位电脑的权限管理比我想得更为严格。别说自己编译的程序了,就是在原机上写个Python或bash脚本,没有签名都不让运行。感谢银河麒麟的KEYSEC机制,让体制内的工作效率进一步下降,流汗黄豆……
标签:龙芯,gnu,Windows,编译,linux,MIPS,mips From: https://www.cnblogs.com/misaka10212/p/18017593