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:
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:
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
ingresar a la línea de comandos, puede ejecutar el programa hello, como se muestra en la siguiente figura:
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