Pratica 01
Pratica 01
Pratica 01
8 de agosto de 2022
Universidade Federal do Ceará Campus Quixadá
Nesta atividade iremos instalar, estudar e testar um toolchain pré-compilado, com objetivo
de gerar o bootloader U-boot, o istema operacional Linux e aplicações para a placa BeagleBone
Black.
Utilizaremos o toolchain da Linaro, que pode ser baixado em http://www.linaro.org/downloads/.
Para facilitar nosso trabalho, baixe e descompacte no ambiente de laboratório como mostrado
no exemplo ao lado “ex: /home/XXX/labs/”.
1 Instalando o toolchain
Abra um novo terminal e entre no diretório de exercícios do treinamento:
$ cd /home/XXX/labs/toolchain
Descompacte o toolchain:
$ tar -Jxvf ~/Downloads/gcc-linaro-13.0.0-2022.08-x86_64_arm-linux-
gnueabihf.tar.xz
Adicione à variável de ambiente PATH o caminho dos binários do toolchain. Desta forma,
teremos acesso às ferramentas de compilação do toolchain no terminal corrente.
$ export PATH=/home/XXX/labs/toolchain/gcc-linaro-arm/bin:$PATH
Pronto, seu toolchain está instalado!
Dica: sempre que você alterar ou criar com o comando export uma variável de ambiente,
esta alteração se perderá quando você abrir um outro terminal ou reiniciar sua máquina.
Se você quiser manter as alterações feitas em uma variável de ambiente, pode incluir
estas alterações no arquivo “ /.bashrc”. Este arquivo é um shell script que é executado
sempre que você inicia uma nova seção de terminal.
#include <stdio.h>
int main() {
printf("Hello embedded world!\n");
return(0);
}
Compile a aplicação para ARM com o toolchain gerado pelo crosstool-ng:
$ arm-linux-gcc main.c -o main
Use o comando file para verificar as informações do arquivo. Perceba que a aplicação foi
compilada para a arquitetura ARM:
$ file main
main: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked
(uses shared libs), for GNU/Linux 2.6.32, not stripped
Dica: para identificar os parâmetros necessários para compilar uma aplicação estatica-
mente, dê uma olhada na página de manual do gcc:
$ man gcc
Para fazer uma busca dentro de uma página de manual, pressione “/” e digite a(s) palavra(s)
que deseja procurar. Pressionando a letra ’n’ (next) você pode avançar para a próxima palavra
na busca.
2 Atividades Práticas
pratica 1:
Cross-compile uma aplicação “Hello World!” com a lib stdio lincado dinâmica e estati-
camente, envie e execute no Linux que está rodando na BleagleBone Black.
Nesta atividade iremos configurar e compilar nosso próprio toolchain usando a ferramenta
crosstool-ng. Este será o toolchain que depois utilizaremos para compilar o bootloader, o kernel,
as bibliotecas e aplicações que desenvolveremos no decorrer do curso. O crosstoo-ng pode ser
baixado da página do projeto em http://crosstool-ng.org/.
Pacotes necessários para realização deste laboratório:
$ sudo apt install build-essential git autoconf bison flex texinfo
help2man gawk libtool-bin libncurses5-dev unzip
1) Altere o nível máximo de log para ver DEBUG (procure LOG_DEBUG na interface,
usando a tecla /) para que possamos ter mais detalhes sobre o que aconteceu durante a
compilação caso algo dê errado.
Na opção Toolchain:
2) Defina o alias (TARGET_ALIAS) para arm-linux. Desta forma, poderemos usar o com-
pilador como arm-linux-gcc em vez do arm-training linux-uclibcgnueabihf-gcc, que é
muito mais longo para digitar.
Em C-Library:
Em C compiler:
3 Atividades Práticas
pratica 2:
Cross-compile uma aplicação “Hello World!” com a lib stdio lincado dinâmica e estati-
camente, envie e execute no Linux que está rodando na BleagleBone Black.