W tym poście chciałbym zaprezentować przygotowanie programu w języku C, z wykorzystaniem środowiska Eclipse.
Konfiguracja Eclipse:
Uruchamianie eclipsa należy wykonać przez wywołanie w konsoli zmiennej środowiskowej:
- . /usr/local/oecore-x86_64/environment-setup-armv7at2hf-neon-angstrom-linux-gnueabi
- ./eclipse
Można to wywołać w standardowy sposób przez konsolę, lub przygotowanie odpowiedniego skryptu wraz z aktywatorem do wywołania programu.
- cd ~/eclipse
- . /usr/local/oecore-x86_64/environment-setup-armv7at2hf-neon-angstrom-linux-gnueabi
- ./eclipse
W Eclipsie tworzymy nowy projekt (New Project -> C Managed Build):
Ustawienie komendy ${CC} w sekcji Cross GCC Compiler:
Ustawienie pozostałych flag jako ${CFLAGS} -c:
Następnie Cross GCC Linker:
Wygenerowany plik makefile wygląda następująco:
- ################################################################################
- # Automatically-generated file. Do not edit!
- ################################################################################
- -include ../makefile.init
- RM := rm -rf
- # All of the sources participating in the build are defined here
- -include sources.mk
- -include src/subdir.mk
- -include subdir.mk
- -include objects.mk
- ifneq ($(MAKECMDGOALS),clean)
- ifneq ($(strip $(C_DEPS)),)
- -include $(C_DEPS)
- endif
- endif
- -include ../makefile.defs
- # Add inputs and outputs from these tool invocations to the build variables
- # All Target
- all: hello_world_test
- # Tool invocations
- hello_world_test: $(OBJS) $(USER_OBJS)
- @echo 'Building target: $@'
- @echo 'Invoking: Cross GCC Linker'
- arm-angstrom-linux-gnueabi-g++ -march=armv7-a -mthumb -mfpu=neon -mfloat-abi=hard --sysroot=/usr/local/oecore-x86_64/sysroots/armv7at2hf-neon-angstrom-linux-gnueabi -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -o "hello_world_test" $(OBJS) $(USER_OBJS) $(LIBS)
- @echo 'Finished building target: $@'
- @echo ' '
- # Other Targets
- clean:
- -$(RM) $(EXECUTABLES)$(OBJS)$(C_DEPS) hello_world_test
- -@echo ' '
- .PHONY: all clean dependents
- -include ../makefile.targets
Projekt składa się z jednego pliku, jest to standardowy Hello World:
- #include <stdio.h>
- #include <stdlib.h>
- int main(void) {
- puts("!!!Hello World xxxx!!!");
- return EXIT_SUCCESS;
- }
Następnie należy wygenerować projekt, który przygotuje odpowiednie pliku w katalogu Debug lub Release.
Wygenerowany plik można przekopiować z pendriva lub wykorzystując do tego program bitvise.
Po wgraniu skompilowanego programu wywołanie następuje standardowo:
./hello_world
Jeśli wyświetli się wiadomość z brakiem możliwości dostępu do pliku to należy wywołać komendę
- chmod +x nazwa_pliku