Red de conocimiento informático - Problemas con los teléfonos móviles - [openharmony] liteos--análisis del proceso de compilación

[openharmony] liteos--análisis del proceso de compilación

Recientemente estuve trabajando en un sensor que accede a openharmony. Al analizar el controlador del acelerómetro en el código fuente, encontré que no solo hay un archivo BUILD.gn, sino también un archivo Makefile, que registra el. ruta del archivo fuente. Esto es muy confuso. ¿Openharmony está compilado por gn ninja o make?

Para aclarar este problema, analicé el proceso de compilación del sistema liteos-a y lo registré aquí

De la documentación oficial, podemos ver que el sistema liteos-a usos Los comandos oficiales de hb son hb set y hb build, por lo que el punto de entrada debe ser la herramienta hb

Vea el directorio de compilación del código fuente de openharmony. Hay un directorio lite/hb en el directorio de compilación del código fuente (el directorio del código fuente del comando hb, usando un script de Python)

Consulte el artículo en el sitio web de investigación de openharmony sobre la depuración del hb a través del complemento vscode python, consulte "Análisis del código fuente del kernel de openharmony v59.xx (herramienta de compilación) | Depuración del proceso de compilación de openharmony"

El proceso de compilación del kernel de Openharmony es muy simple y fácil para entender el proceso.

Una vez completada la configuración, puede comenzar a depurar en vscode.

Este es el foco de toda la compilación. A través de la depuración, puede ver la llamada final a gn/ninja/. fs_make se analiza a continuación

Este es el proceso de compilación completo. Primero, se llama a gn para generar el archivo ninja, luego se compila a través de ninja y finalmente se compila a través de fs_make. Continúe con la depuración, ingresará a la interfaz ninja_build, que se implementa y ejecuta. El comando ninja detallado es el siguiente

Este comando es similar al comando make, pero presta más atención a la velocidad (para obtener más información). , puede buscar la diferencia entre los dos en línea); este comando pasa build.ninja/toolchain.ninja/each BUILD .gn para compilar y generar .bin/.so/.a y otros archivos

Después se confirma toda la compilación, la información de éxito se generará como se muestra a continuación

En el directorio de salida, coloque Generar un archivo de imagen para grabar como se muestra a continuación