O sistema Hongmeng compila o primeiro APP: olá

Capítulo 3 Compile o primeiro APP: olá

1.1 Introdução ao Clang, LLVM e GCC

Quando compilamos o programa para PC no Ubuntu, execute este comando:

gcc  -o  hello   hello.c

Quando compilamos o programa para a placa ARM no Ubuntu, execute este comando (o prefixo gcc pode ser diferente):

arm-linux-gcc  -o  hello   hello.c

No Liteos-a, o LLVM é usado para compilar o programa. O significado original de LLVM é "Máquina Virtual de Baixo Nível", uma máquina virtual de baixo nível. Mas agora ele se desenvolveu em um sistema de estrutura para um compilador (compilador). Simplificando, o LLVM pode substituir o GCC, o LLVM é fácil de expandir e pode fornecer melhor desempenho.

O framework do LLVM é o seguinte:
Insira a descrição da imagem aqui
Clang é "Frontend" (front end), usado para realizar análises léxicas, análises gramaticais, simplesmente colocar: verificar erros de sintaxe, incluir arquivos de cabeçalho, expandir macros.

No meio está o otimizador, que converte o código analisado pelo front-end em LLVM IR (representação intermediária) .RIR não tem nada a ver com a máquina e uma série de otimizações podem ser facilmente adicionadas.

O IR obtido após a otimização é convertido em código de máquina de várias máquinas por "Backend".

O conteúdo acima vem da Internet. Não tenho um conhecimento profundo do Clang e do LLVM, então apenas os apresento brevemente.

1.2 Compilar o programa hello

Ao usar o Clang, temos que especificar vários parâmetros: para que tipo de CPU compilar o programa (ARM ou Risc-V), qual é a arquitetura da CPU (cortex A7 ou cortex A15), onde estão os arquivos de cabeçalho / biblioteca?

Ao compilar o programa para Liteos-a, tomando o programa hello como exemplo, você pode executar o seguinte comando:

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

No parâmetro sysroot do comando acima, os diretórios de arquivos de cabeçalho padrão e arquivos de biblioteca são especificados.

Você também pode usar os parâmetros "-I" e "-L" como GCC para especificar os diretórios de outros arquivos de cabeçalho e arquivos de biblioteca. Por exemplo, este programa será compilado mais tarde:

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 Coloque o programa hello em rootfs

Depois de compilar o programa hello, você pode colocá-lo na letra bin do diretório rootfs, por exemplo:

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

Em seguida, recrie rootfs.jffs2 e execute o seguinte comando:

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

Supondo que o programa hello esteja localizado no diretório / home / book / apps / hello, a captura de tela da operação é a seguinte:
Insira a descrição da imagem aqui

Coloque o rootfs.jffs2 obtido no diretório de arquivos da ferramenta de gravação e você pode iniciá-lo com a ferramenta de gravação: Após
Insira a descrição da imagem aqui
entrar na linha de comando, você pode executar o programa hello, conforme mostrado na figura a seguir:
Insira a descrição da imagem aqui
Nota: Você deve usar "./bin/ olá ", o caminho absoluto" / bin / olá "não pode ser usado

Download de texto completo
Grupo técnico de troca (Desenvolvimento
Hongmeng / Linux / Embedded / Driver / Download de dados) Grupo QQ: 869222007

Acho que você gosta

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