logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Gdzie w makefile Eclipse jest informacja o F_CPU po zmianie w Project/Properties?

12 Sie 2015 23:12 1827 8
  • #1 14917647
    Konto nie istnieje
    Poziom 1  
  • #2 14917696
    Imekxus
    Poziom 19  
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    tak wygląda mój makefile, z tym, że ja stworzyłem sobie go za pomocą avrstudio i tylko przy nowym projekcie robie ctrl+c, ctrl+v a programy pisze w notepadzie
  • #3 14917702
    Konto nie istnieje
    Poziom 1  
  • #5 14917756
    Konto nie istnieje
    Poziom 1  
  • Pomocny post
    #6 14917788
    szczywronek
    Poziom 28  
    Popatrz na początek swojego pliku makefile, masz tam "include'y" które działają podobnie jak w języku C. Makefile jest rozbity na kilka plików.
    Cytat:
    The include directive tells make to suspend reading the current makefile and read one or more other makefiles before continuing.
    (źródło)

    *.eep - to wsad pamięci eeprom
    *.lss - kod programu w asm
    *.hex - wsad pamięci flash
    *.map - informacje o rozmieszczeniu obiektów w pamięci, wartości symboli linkera itp...
    *.mk - pliki include'owane w makefile'u
    *.d - d jest chyba od "dependencies" ale w sumie nie wiem
    *.o - pliki obiektowe wyplute przez kompilator
  • #7 15523065
    Konto nie istnieje
    Poziom 1  
  • #8 15539734
    linuxtorpeda
    Poziom 26  
    W skrócie:
    - przetwarzanie plików źródłowych (.c) preprocesorem polega na wykonaniu wszystkich dyrektyw preprocesora, m.in. wklejenie w miejsce #include odpowiednich plików czy rozwiązanie makr zdefiniowanych za pomocą #define lub podanych jako parametr w linii komend, wynikiem są nadal pliki źródłowe .c ze wstawionymi opcjonalnie plikami nagłówkowymi .h
    - kompilacja oznacza generowanie plików obiektowych (.o) na podstawie plików źródłowych (.c)
    - linkowanie oznacza generowanie plików wykonywalnych (najczęściej .elf) i/lub obiektowych na podstawie plików obiektowych (.o)
    - generowanie binarki (.bin) polega na usunięciu wszystkich metadanych na temat pliku wykonywalnego i odpowiednim ułożeniu symboli w strukturze pliku, która to pokrywa się 1:1 z tym, co znajdzie się w pamięci mikrokontrolera

    gcc jest sprytnym narzędziem, w zależności od podanych parametrów wywołuje linker (który można wywołać jawnie poleceniem ld) lub kompilator. W makefile'u Eclipse'a powyżej linkowanie odbywa się za pomocą wywołania gcc.

    Odnosząc tą wiedzę do pytania powyżej - definicję makra można utworzyć na poziomie makefile'a, przekazując do kompilatora flagę -D z odpowiednim makrem, np. -DF_CPU=12000000, w makefile'u Imekxusa odpowiednia flaga ustawiana jest w zmiennej CDEFS, która to później staje się fragmentem zmiennej CFLAGS, będącej zmienną używaną w niejawnych regułach (ang. implicit rules) przez Make.

    AdamZad, jako że nie zamieściłeś zawartości pozostałych includowanych plików, mogę tylko przypuszczać, że miejsce odpowiednie do zdefiniowania własnych flag znajdziesz w sources.mk.

    szczywronek, pliki .d to jak słusznie się domyślasz zależności, czyli reguły generowane przez gcc przy przetwarzaniu plików .c preprocesorem, na podstawie deklaracji preprocesora #include (opcja -M).

    Zainteresowanych tematem zachęcam do zapoznania się z manualem Make :)
  • #9 16600396
    Konto nie istnieje
    Poziom 1  
REKLAMA