Jak použít Makefile ?
Moderátor: Moderátoři
- markoni
- Příspěvky: 2310
- Registrován: 30 říj 2006, 01:00
- Bydliště: Poblíž Zlína
- Kontaktovat uživatele:
Jak použít Makefile ?
Zdravím
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
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: 685
- Registrován: 06 kvě 2017, 02:00
https://cs.wikipedia.org/wiki/Make
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 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.
Nie, makefile za teba kafíčko neuvarí. Je to texťák, ktorý prešrotí make, aby vedelo, čo a ako skompilovať a s čím zlinkovať, s akými parametrami buildu. Dependencies, teda nutné knižnice, apiny, ich verzie, kde majú byť umiestnené, hodnoty premenných prostredia, toolset ktorý treba a iné ďalšie predispozície, treba vždy prelúskať z požiadaviek, zväčša uvedené v README, install, contrib, v markdowne a tak ďalej. Tie musia byť splnené ešte predtým, než spustíš build.
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)
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)
"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.
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.
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: 2310
- Registrován: 30 říj 2006, 01:00
- Bydliště: Poblíž Zlína
- Kontaktovat uživatele:
Jsou veřejně dostupné je to zapakované v archivu http://1-2-8.net/mwva/mrazik/hdo/stm32f051_hdo.tgz . díky
- markoni
- Příspěvky: 2310
- Registrován: 30 říj 2006, 01: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
![Idea :idea:](./images/smilies/icon_idea.gif)
A výsledek je tento kde je chyba nebo co mě tam chybí ? díky
- josef_novak
- Příspěvky: 685
- Registrován: 06 kvě 2017, 02:00
Pod Linuxem to bez problému zkompiluji.
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.
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: 2310
- Registrován: 30 říj 2006, 01:00
- Bydliště: Poblíž Zlína
- Kontaktovat uživatele:
Já nevím co je tam za problém mě by stačilo kdybys mi poskytl HDO.bin s jen s malou úpravou souboru main.cpp
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
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;
}
- josef_novak
- Příspěvky: 685
- Registrován: 06 kvě 2017, 02:00
- josef_novak
- Příspěvky: 685
- Registrován: 06 kvě 2017, 02:00
- markoni
- Příspěvky: 2310
- Registrován: 30 říj 2006, 01:00
- Bydliště: Poblíž Zlína
- Kontaktovat uživatele:
Já mám Atollic v tom IDE jsem dělal před nevím kolika ti lety podle http://mcu.cz/comment-n2058.html . Ty ostatní projekty fungují co jsou bez chyby, taky nevím jestli jsem ten projekt HDO importoval dobře .díky