首页 > 其他分享 >在WSL2中构建龙芯MIPS编译环境并编译应用软件

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

时间:2024-02-16 23:16:12浏览次数:37  
标签:龙芯 gnu Windows 编译 linux MIPS 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机制,让体制内的工作效率进一步下降,流汗黄豆……

标签:龙芯,gnu,Windows,编译,linux,MIPS,mips
From: https://www.cnblogs.com/misaka10212/p/18017593

相关文章

  • 编译调试kube-apiserver
    k8sv1.19.0cdkubernetes&&makegenerated_filescdcmd/kube-apiserver&&gobuild报错app/server.go:467:87:undefined:openapi.GetOpenAPIDefinitionscdkubernetes&&makegenerated_files#vscodelaunch.json{"name":......
  • C++——编译和链接原理笔记
    我们在学习和开发C++程序中,理解编译和链接的原理至关重要。下面将学习一下C++程序是如何从源代码转换为可执行文件的过程,并结合示例代码进行说明。也是为了解开自己在刚学习C++的时候,编译时间长的疑惑。为了不让自己的学习之路这么枯燥,我按照一个正常的开发流程梳理一下......
  • day23_编译LAMP
    学习背景学习目的,在搭建lamp架构的业务背景下,先用了yum搭建的形式,部署了disuz产品从过程中理解yum如何安装软件,生成的配置文件路径,如何启动每一个进程,你应该整理清楚操作文档,下次拿着这个文档,可以很快的再部署出多套一样的环境。有同学感慨,说这个搭建环境好难,的确,和之前的命令......
  • Icarus verilog编译器相关
    Overview最近在github上看到一个AXI示例,非常详细,想看一看学习,作者表示运行需要预装Icarusverilog,虽然三大EDA的仿真软件都玩过,但这个软件我并不熟悉,遂在自己的虚拟机上安装并了解了一些内容IcarusVerilogisnotaimedatbeingasimulatorinthetraditionalsense,buta......
  • NET项目&DLL反编译&MSSQL监控&VS搜索&注入&上传
    知识点1.NET普通源码&编译源码2.DLL反编译&后缀文件&指向3.代码审计-SQL注入&文件上传ASPX文件->CSASPX.CSDLL反编译后寻找看核心代码分析漏洞CSASPX.CSDLL反编译文件->ASPX文件寻找确定漏洞进行调试测试代码审计时要把这个反编译文件提取导入到IDE中后期搜索关......
  • nim静态编译capstone示例代码
    capstone.c代码:/*CapstoneDisassemblerEngine*//*ByNguyenAnhQuynh<[email protected]>,2013*/#include<stdio.h>#include<stdlib.h>#include<capstone/capstone.h>#include<capstone/platform.h>staticcshhandle;s......
  • [Kyana]ffmpeg编译方法
    01|Msys跨平台编译ffmpeg配置环境安装Msys2,修改安装目录下的/etc/pacman.d/文件夹下的mirrorlist文件,切换为中科大源。打开Msys2的MinGW64终端,执行pacman-Syu更新软件包使用pacman-Sgccyasmmake安装编译所需的依赖。编译流程编译x264库从videolan官网下载x264代码......
  • [Kyana]ffmpeg编译方法
    01|Msys跨平台编译ffmpeg配置环境安装Msys2,修改安装目录下的/etc/pacman.d/文件夹下的mirrorlist文件,切换为中科大源。打开Msys2的MinGW64终端,执行pacman-Syu更新软件包使用pacman-Sgccyasmmake安装编译所需的依赖。编译流程编译x264库从videolan官网下载x264代码......
  • 2.1.4 程序基本概念——编辑、编译、解释、调试的概念
    编辑概念C++程序的编辑即为,对代码的编写过程,完成这种过程需要借助相关软件,该类软件叫做C++代码编辑器。编译和解释概念计算机只能识别由0、1组成的二进制代码,称为机器码。所以我们现在使用高级编程语言编写的程序就需要一个翻译过程,将其转换成计算机认识的二进制代码,而这个翻......
  • deepinV23编译文件管理器改造
    1.概述本篇博客主要介绍在deepinV23和deepinV20.9上改造编译安装dde-file-manager的过程。其中编译的过程,主要参考了:Deepin深度操作系统中编译和安装dde-file-manager-CSDN博客,感谢这位大佬的分享自己改造的部分,主要是:增加文件管理器和桌面通过ctrl+d删除文件或目录增加桌......