Introducción a la cadena de herramientas RSIC-V y su tutorial de instalación.

Prefacio

(1) Esta serie de artículos son notas de estudio grabadas después del curso RISC-V del profesor Wang Chen . (2) enlace gitee
al código relevante del curso ( 3) Reclutamiento a largo plazo de pasantes de laboratorio PLCT: enlace de información de reclutamiento (4) Al configurar la cadena de herramientas RSIC-V, encontré muchos obstáculos. También hay artículos del mismo tipo en Internet, y se ha explicado el archivo Léame del almacén riscv-gnu-toolchain . Pero todavía me atrevo a escribir un tutorial de configuración de la cadena de herramientas RSIC-V que los principiantes puedan entender. (5)


Se destacan dos puntos:
<1>Debido a que RSIC-V es un producto relativamente de vanguardia, su soporte para chino no es alto, por lo que se recomienda utilizar rutas en inglés tanto como sea posible para procesar archivos relacionados con RSIC-V en el entorno Linux.
<2>Los caracteres de nueva línea de Windows y Linux son diferentes. Puede deberse a la inconsistencia de los caracteres de nueva línea que ocurren muchos errores extraños en el proceso de compilación. Así que no seas como yo y haz algunas operaciones en Windows primero y luego pásalas a Linux.

Por qué necesitas una cadena de herramientas de compilación cruzada

(1) Cuando aprendimos lenguajes de programación por primera vez, siempre tomamos directamente un compilador y escribimos el siguiente código. Luego haga clic en el botón ejecutar del compilador. Descubriremos que en este proceso, las máquinas que compilan este archivo c y ejecutan este archivo c son todas la misma computadora. Esto se llama compilación local .

#include <stdio.h>
int main()
{
    
    
	printf("hello world\r\n");
	return 0;
}

(2) Sin embargo, durante el proceso de desarrollo integrado. Todos escribimos un programa en la computadora, luego usamos un compilador para compilar el programa y luego grabamos el programa ejecutable en la placa de desarrollo. Podemos encontrar que el programa está compilado en la computadora y el archivo ejecutable final está en la placa de desarrollo. Esto se llama compilación cruzada .
(3) En términos generales, todas nuestras computadoras se basan en la arquitectura X86. Cuando necesitamos compilar programas RSIC-V, ciertamente no podemos usar herramientas de compilación locales . Por lo tanto, en este momento necesitamos usar una cadena de herramientas de compilación cruzada.

Cómo hacer que Linux sea mágico

(1) Porque muchas operaciones de RSIC-V se realizan en la red externa y el proceso de desarrollo debe desarrollarse en Linux. Por lo tanto, sugiero aquí que Linux también tenga la capacidad de acceder al mundo.
(2) Una cosa a tener en cuenta es que si sigues el blog a continuación, necesitarás la magia de Windows; de lo contrario, no podrás hacer nada.
(3) VPN de host compartido de máquina virtual Ubuntu (para NAT o puente)

Cómo instalar la cadena de herramientas de compilación cruzada

Método 1

(1) Si se trata de un entorno Ubuntu 20.04, puede ejecutar directamente las siguientes instrucciones para instalar la cadena de herramientas GNU y el emulador QEMU proporcionados oficialmente.
(2) Una cosa a tener en cuenta aquí es que la cadena de herramientas gcc-riscv64-unknown-elf instalada en este momento no parece poder compilar funciones de la biblioteca c. Entonces, para ejecutar la tercera instrucción, use la cadena de herramientas gcc-riscv64-linux-gnu.
(3) Alguien puede preguntar, ¿cuál es la diferencia entre estas dos cadenas de herramientas?
<1>riscv32-unknown-elf-gcc, riscv64-unknown-elf-gcc: utilice la biblioteca riscv-newlib (biblioteca C integrada orientada) y solo admita enlaces estáticos, no enlaces dinámicos.
<2>riscv32-unknown-linux-gnu-gcc, riscv64-unknown-linux-gnu-gcc: utilice la biblioteca estándar glibc y admita enlaces dinámicos.

sudo apt update
sudo apt install build-essential gcc make perl dkms git gcc-riscv64-unknown-elf gdb-multiarch qemu-system-misc
sudo apt install gcc-riscv64-linux-gnu

Método 2

(1) Sacamos directamente la cadena de herramientas del almacén oficial.
Nuevamente, ¡no utilice rutas que no estén en inglés cuando realice las siguientes operaciones! ! !

git clone https://github.com/riscv/riscv-gnu-toolchain

(2) Después de extraer el almacén, debe instalar los archivos de dependencia. Diferentes distribuciones de Linux realizan diferentes operaciones, es necesario ejecutar los comandos correspondientes según la versión.

# Ubuntu 
sudo apt-get install autoconf automake autotools-dev curl python3 python3-pip libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev libexpat-dev ninja-build git cmake libglib2.0-dev
# Fedora/CentOS/RHEL
sudo yum install autoconf automake python3 libmpc-devel mpfr-devel gmp-devel gawk  bison flex texinfo patchutils gcc gcc-c++ zlib-devel expat-devel
# Arch Linux 
sudo pacman -Syyu autoconf automake curl python3 libmpc mpfr gmp gawk base-devel bison flex texinfo gperf libtool patchutils bc zlib expat
#  OS X
brew install python3 gawk gnu-sed gmp mpfr libmpc isl zlib expat texinfo flock

(3) Después de completar los dos pasos anteriores, necesitamos instalar el compilador gcc según nuestras necesidades. Si desea participar en el desarrollo integrado de RISC-V, instale Newlibla biblioteca y simplemente ejecute uno make. Si está desarrollando y utilizando un proyecto RSIC-V a gran escala Linux cross-compiler, ingréselo durante la compilación make linux.

cd riscv-gnu-toolchain/
mkdir build
cd build/
# 下面部分,需要你看需求来执行
# --------------------------------------------------------
# 如果只要进行64位的RISC-V的嵌入式系统开发,执行如下命令
../configure --prefix=/opt/riscv
# 这里的N是数字,表示多少核同时编译,N越大编译速度越快。
# 如果超出了虚拟机所分配的最大内核数量,将只会依据最大内核数量编译
sudo make -JN
# --------------------------------------------------------
# 如果还要进行32位的RISC-V的嵌入式系统开发,执行如下命令。
# 这个既可以进行64位开发,也可进行32位开发
../configure --prefix=/opt/riscv --enable-multilib
# 这里的N是数字,表示多少核同时编译,N越大编译速度越快。
# 如果超出了虚拟机所分配的最大内核数量,将只会依据最大内核数量编译
sudo make -JN
# --------------------------------------------------------
# 如果只要64位大型RSIC-V项目开发,执行如下命令
../configure --prefix=/opt/riscv
# 这里的N是数字,表示多少核同时编译,N越大编译速度越快。
# 如果超出了虚拟机所分配的最大内核数量,将只会依据最大内核数量编译
sudo make Linux -JN
# --------------------------------------------------------
# 如果还要进行32位大型RSIC-V项目开发,执行如下命令
# 这个既可以进行64位开发,也可进行32位开发
../configure --prefix=/opt/riscv --enable-multilib
# 这里的N是数字,表示多少核同时编译,N越大编译速度越快。
# 如果超出了虚拟机所分配的最大内核数量,将只会依据最大内核数量编译
sudo make Linux -JN

Información relacionada con el número de núcleos de la máquina virtual.

Cómo verificar y configurar la cantidad de núcleos de máquinas virtuales

(1) Apague la máquina virtual—>Editar máquina virtual—>Establecer el número de núcleos

Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí

¿Cuál es la configuración general para la cantidad de núcleos de máquinas virtuales?

(1) En términos generales, la cantidad de núcleos de una máquina virtual es como máximo la mitad de la cantidad de núcleos de una computadora real.
(2) Podemos verificar la cantidad real de núcleos de computadora de la siguiente manera

Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí

Ejecutar programa C con arquitectura RSIC-V

compilar

(1) Compile el proyecto de acuerdo con los requisitos como se muestra a continuación.

#include <stdio.h>
int main()
{
    
    
	printf("hello world\r\n");
	return 0;
}

Insertar descripción de la imagen aquí

implementar

Insertar descripción de la imagen aquí

Artículo de referencia

(1) Práctica de construcción y operación del entorno de compilación RISC-V GNU ;
(2) VPN de host compartido de máquina virtual Ubuntu (adecuada para NAT o puente)

Supongo que te gusta

Origin blog.csdn.net/qq_63922192/article/details/133495747
Recomendado
Clasificación