El sistema Hongmeng compila la primera APLICACIÓN: hola

Capítulo 3 Compila la primera aplicación: hola

1.1 Introducción a Clang, LLVM y GCC

Cuando compilemos el programa para PC en Ubuntu, ejecutamos este comando:

gcc  -o  hello   hello.c

Cuando compilemos el programa para la placa ARM en Ubuntu, ejecute este comando (el prefijo gcc puede ser diferente):

arm-linux-gcc  -o  hello   hello.c

En Liteos-a, LLVM se utiliza para compilar el programa. El significado original de LLVM es "Máquina virtual de bajo nivel", una máquina virtual de bajo nivel. Pero ahora se ha convertido en un sistema marco para un compilador (compilador). En pocas palabras, LLVM puede reemplazar a GCC, LLVM es fácil de expandir y puede proporcionar un mejor rendimiento.

El marco de LLVM es el siguiente:
Inserte la descripción de la imagen aquí
Clang es "Frontend" (front end), utilizado para realizar análisis léxico, análisis gramatical, en pocas palabras: comprobar errores de sintaxis, incluir archivos de encabezado, expandir macros.

En el medio está el optimizador, que convierte el código analizado por el front-end en LLVM IR (representación intermedia). IR no tiene nada que ver con la máquina y se pueden agregar fácilmente una serie de optimizaciones.

El IR obtenido después de la optimización se convierte en el código de máquina de varias máquinas mediante "Backend".

El contenido anterior proviene de Internet. No tengo un conocimiento profundo de Clang y LLVM, así que solo doy una breve introducción.

1.2 Compilar el programa de saludo

Cuando usamos Clang, tenemos que especificar muchos parámetros: para qué tipo de CPU compilar el programa (ARM o Risc-V), cuál es la arquitectura de la CPU (cortex A7 o cortex A15), ¿dónde están los archivos de encabezado / archivos de biblioteca?

Al compilar el programa para Liteos-a, tomando el programa hello como ejemplo, puede ejecutar el siguiente comando:

cd  /home/book/openharmony_for_imx6ull/apps/hello
clang -target arm-liteos   --sysroot=/home/book/openharmony/prebuilts/lite/sysroot/  \
   -o  hello   hello.c

En el parámetro sysroot del comando anterior, se especifican los directorios de archivos de encabezado estándar y archivos de biblioteca.

También puede utilizar los parámetros "-I" y "-L" como GCC para especificar los directorios de otros archivos de encabezado y archivos de biblioteca. Por ejemplo, este programa se compilará más adelante:

cd  /home/book/openharmony_for_imx6ull/apps/freetype
clang -target arm-liteos   --sysroot=/home/book/openharmony/prebuilts/lite/sysroot/  \
-I /home/book/openharmony/third_party/freetype/include \
-L /home/book/openharmony/out/ipcamera_hi3518ev300/libs/usr  \
-lfreetype \
-o show_line show_line.c

1.3 Ponga el programa de saludo en rootfs

Después de compilar el programa de saludo, puede ponerlo en la letra bin en el directorio rootfs, por ejemplo:

cd  /home/book/openharmony_for_imx6ull/apps/hello
cp  hello  /home/book/openharmony/kernel/liteos_a/out/imx6ull/rootfs/bin

Luego vuelva a crear rootfs.jffs2, ejecute el siguiente comando:

> cd  /home/book/openharmony/kernel/liteos_a/out/imx6ull/ mkfs.jffs2  -s
> 0x10000 -e 0x10000 -d rootfs -o rootfs.jffs2

Suponiendo que el programa hello se encuentra en el directorio / home / book / apps / hello, la captura de pantalla de la operación es la siguiente:
Inserte la descripción de la imagen aquí

Coloque el rootfs.jffs2 obtenido en el directorio de archivos de la herramienta de grabación y podrá iniciarlo con la herramienta de grabación: Después de
Inserte la descripción de la imagen aquí
ingresar a la línea de comandos, puede ejecutar el programa hello, como se muestra en la siguiente figura:
Inserte la descripción de la imagen aquí
Nota: Debe usar "./bin/ hola ", la ruta absoluta" / bin / hola "no se puede utilizar

Descarga de texto completo
Technical Exchange Group (
Hongmeng Development / Linux / Embedded / Driver / Data Download) QQ Group: 869222007

Supongo que te gusta

Origin blog.csdn.net/thisway_diy/article/details/108666786
Recomendado
Clasificación