Jak použít Makefile ?
Moderátor: Moderátoři
- markoni
- Příspěvky: 2312
- Registrován: 30 říj 2006, 00:00
- Bydliště: Poblíž Zlína
- Kontaktovat uživatele:
Jak použít Makefile ?
Možná tato otázka co položím bude znít jako hloupá .Mám projekt který má i soubor Makefile ale já nevím jak jej použít ? díky
- josef_novak
- Příspěvky: 1220
- Registrován: 06 kvě 2017, 00:00
V adresáři bývají soubory jako install (readme), ve kterých se vyskytují i detaily nebo syntaxe, které jde použít při kompilaci. Také tam může být doplněno, jaké knihovny je potřeba doinstalovat apod.
V prípade, že tomu tak nie je, nič ti nebráni makefile otvoriť ako text a zistiť, aké náležitosti budeš musieť mať splnené, akurát to je mierne zložitejšie než si pozreť readme.
Á propos, ak nechceš buildovať zo zdrojákov, stiahni si priamo binárku alebo cez vhodný package manager, v závislosti od distribucie (ak si na *nix)
Když napíšeš make, tak se spustí program make, který hledá v aktuálním adresáři soubor Makefile a když ho najde, tak ho začne zpracovávat.
Je to tvůj program, nebo cízí? Jestli jsou zdrojáky veřejně dostupné tak se pochlub, co je to zač, třeba ti někdo poradí víc.
- markoni
- Příspěvky: 2312
- Registrován: 30 říj 2006, 00:00
- Bydliště: Poblíž Zlína
- Kontaktovat uživatele:
- markoni
- Příspěvky: 2312
- Registrován: 30 říj 2006, 00:00
- Bydliště: Poblíž Zlína
- Kontaktovat uživatele:
Zmije píše:"Makefile" je vpdstatě skript. Jeho interpret je program "make".
Když napíšeš make, tak se spustí program make, který hledá v aktuálním adresáři soubor Makefile a když ho najde, tak ho začne zpracovávat.
Já jsem si taky myslel že ten soubor makefile není jen texták že musí se něčím spustit jenže jsem nevěděl jak
A výsledek je tento kde je chyba nebo co mě tam chybí ? díky
- josef_novak
- Příspěvky: 1220
- Registrován: 06 kvě 2017, 00:00
Dej si do Googlu tohle "make (e=2): The system cannot find the file specified." a hledej, ale většinou se zmiňuje PATH.
Kód: Vybrat vše
root@debian:~/test-part/hdo$ make
arm-none-eabi-gcc -mthumb -mcpu=cortex-m0 -c -Os -I. -I./inc -I./lib/inc -Wall -g -ffunction-sections -fdata-sections -fmessage-length=0 -fno-short-enums -fno-rtti -fno-exceptions -o main.o main.cpp
arm-none-eabi-gcc -mthumb -mcpu=cortex-m0 -c -Os -I. -I./inc -I./lib/inc -Wall -g -ffunction-sections -fdata-sections -fmessage-length=0 -fno-short-enums -fno-rtti -fno-exceptions -o gpio.o ./src/gpio.cpp
arm-none-eabi-gcc -mthumb -mcpu=cortex-m0 -c -Os -I. -I./inc -I./lib/inc -Wall -g -ffunction-sections -fdata-sections -fmessage-length=0 -fno-short-enums -fno-rtti -fno-exceptions -o usart1.o ./src/usart1.cpp
arm-none-eabi-gcc -mthumb -mcpu=cortex-m0 -c -Os -I. -I./inc -I./lib/inc -Wall -g -ffunction-sections -fdata-sections -fmessage-length=0 -fno-short-enums -fno-rtti -fno-exceptions -o print.o ./src/print.cpp
arm-none-eabi-gcc -mthumb -mcpu=cortex-m0 -c -Os -I. -I./inc -I./lib/inc -Wall -g -ffunction-sections -fdata-sections -fmessage-length=0 -fno-short-enums -fno-rtti -fno-exceptions -o adcirq.o ./src/adcirq.cpp
arm-none-eabi-gcc -mthumb -mcpu=cortex-m0 -c -Os -I. -I./inc -I./lib/inc -Wall -g -ffunction-sections -fdata-sections -fmessage-length=0 -fno-short-enums -fno-rtti -fno-exceptions -o filter.o ./src/filter.cpp
arm-none-eabi-gcc -mthumb -mcpu=cortex-m0 -c -Os -I. -I./inc -I./lib/inc -Wall -g -ffunction-sections -fdata-sections -fmessage-length=0 -fno-short-enums -o startup.o ./src/startup.c
arm-none-eabi-gcc -mthumb -mcpu=cortex-m0 -c -Os -I. -I./inc -I./lib/inc -Wall -g -ffunction-sections -fdata-sections -fmessage-length=0 -fno-short-enums -o csystem.o ./src/csystem.c
arm-none-eabi-gcc -mthumb -mcpu=cortex-m0 -nostartfiles -Wl,--gc-sections -o Hdo.elf main.o gpio.o usart1.o print.o adcirq.o filter.o startup.o csystem.o -L ./lib/ -T stm32_flash.ld -laeabi-cortexm0
Project size :
arm-none-eabi-size Hdo.elf
text data bss dec hex filename
2932 4 364 3300 ce4 Hdo.elf
arm-none-eabi-objcopy --strip-unneeded -O binary Hdo.elf Hdo.bin
gcc -Os -o calculate ./calc/coef.c -lm
root@debian:~/test-part/hdo$
- markoni
- Příspěvky: 2312
- Registrován: 30 říj 2006, 00:00
- Bydliště: Poblíž Zlína
- Kontaktovat uživatele:
Kód: Vybrat vše
#include "main.h"
/**
* @file
*
* @brief Spínač HDO.
* Ve starším příkladu byl pro tento účel použit procesor ARM poněkud zastaralé struktury.
* Zde použijeme procesor STM32F051 s tím, že snad chvilku přežije a pokud ne, mělo by to
* jít snadno přeportovat na jiný. I když - zde jsou použity poněkud netradiční postupy.
* -# Není použita standardní periferní knihovna.
* -# Dokonce i standardní hlavička byla nahrazena řadou vlastních definic periferií, jen tak
* na zkoušku, že to jde i jinak. Používá bitová pole.
* -# Celé je to psáno v C++ a to tak, že používá vše, co jen na tak malém procesoru lze
* efektivně využít. Dědičnost, polymorfizmus, šablony.
*
* Výsledný obraz kódu je dost kompaktní, s použitím optimalizace je C++ docela efektivní
* nástroj pro tvorbu firmware. Kód by měl fungovat na F0 Discovery kitu s následujícím
* pinoutem:
*
* -# PA5 - vstup DAC, hlídané napětí.
* -# PA2 - Relé, aktivní úroveň H.
* -# PA3 - Povolovací výstup (nemusí být použit, stálá úroveň H - speciální IO pro test to prostě potřeboval).
* V konstruktoru Filter::Filter() :
* -# PC8 - modrá led na kitu, bliká s periodou 240 ms, indikuje, že fw žije.
* -# PC9 - zelená led na kitu, svítí při jednotlivých bitech telegramu.
*
* Telegramy se i zde vypisují na sériový port (PA9) s nastavením 8N1, 9600 Bd.
*
* */
// Dvě nezávislé třídy se pak spojí v součinnost operátorem +=
static AdcIrq adc (1000, 5); // 1MHz / 1000 = 1 kHz, kanál 5 (pin PA5)
static Filter hdo (1706); // Viz calculate
static GpioClass relay (GpioPortA, 2); // Relé je na IC-DX
static GpioClass enabl (GpioPortA, 3); // a ten potřebuje vybavení.
int main (void) {
enabl << true; // Pomocný výstup pro IC-DX, není nutný
// Nastavit úroveň spínání
hdo.setTriger (0x20000);
// Výstupní pin
hdo.setOutput (&relay);
// Výkonný povel
hdo.setCommand("A1B8DP5");
// Nad adc je hdo - to pokračuje v práci.
adc += hdo; // spojit
// Skonči v nekonečné smyčce.
for (;;) {
hdo.Telegram();
__WFI(); // Lze i uspat jádro, ADC ho včas probudí.
}
return 0;
}
já bych si pokusil nahrát do kitu pomocí tohohle,doufám že nepřepíšu paměť s bootloaderu poněvač by to bylo v p****** , nicméně budu řešit dále proč mi to nejde díky
- josef_novak
- Příspěvky: 1220
- Registrován: 06 kvě 2017, 00:00
- josef_novak
- Příspěvky: 1220
- Registrován: 06 kvě 2017, 00:00
- markoni
- Příspěvky: 2312
- Registrován: 30 říj 2006, 00:00
- Bydliště: Poblíž Zlína
- Kontaktovat uživatele: