Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

[STM32] - Makefile, synchronizacja przy wielu wątkach

kriss68 18 May 2015 14:27 846 7
  • #1
    kriss68
    Level 20  
    Witam,

    Używam Makefile od Freddiego, mam z nim jednak problem przy kompilacji wielowątkowej. Przy odpaleniu make -j4 wyświetlanie rozmiaru po kompilacji wysypuje się, jest to spowodowane próbą wyświetlenia rozmiaru przed zakończeniem kompilacji w pozostałych wątkach. Jest na to jakiś sposób? W załączniku Makefile którego używam (spakowany bo nie można wrzucać plików bez rozszerzenia).
  • #2
    tadzik85
    Level 38  
    Uzależnić tą regułę od pliku elfa:
    print_size : $(ELF)
  • #4
    tadzik85
    Level 38  
    Freddie Chopin wrote:
    Tak jak pisze tadzik powyżej, trzeba dodać trochę więcej zależności. Pełne zależności dla tej reguły wyglądałyby tak:

    print_size : $(OBJS) $(USER_OBJS) $(ELF)


    A tak, przy okazyjce zapytam..

    size drukuje coś w konsoli. Spoko
    A teraz chciałbym by nadal to robił a jednocześnie przekazywał to do gawka...

    Jak to zrobić. Obecnie wywołuje 2 raz size przekierowując strumień do gawk.
  • #5
    Freddie Chopin
    MCUs specialist
    Możesz spróbować zmodyfikować regułę tak aby używała komendy "tee", choć ona tylko pozwoli Ci przekazać stdout dodatkowo do pliku, więc nie wiem czy Cię to urządza. Rozwiązanie jakie zastosowałeś jest OK, skoro działa to nie wiem czy jest sens kombinować...

    No chyba że chcesz mieć koniecznie tą akcję przy "make all", to wtedy po prostu zrób dodatkową regułę, która by coś takiego realizowała. Np. skopiuj istniejce "print_size", zmień mu nazwę na "print_size_for_gawk", zmodyfikuj wywołania $(SIZE), a następnie tą nową regułe dodaj do "all".
  • #6
    alagner
    Level 26  
    @tadzik85
    Jak to robisz dokładnie?

    @freddie " | tee -" wiele tu nie da, bo powieli stdout, który awk i tak wytnie. Można ew. przekierować jeden strumień na stderr i jego awkować, ale mało to eleganckie.
  • #7
    tadzik85
    Level 38  
    alagner wrote:
    @tadzik85
    jak to robisz dokładnie?


    Code: bash
    Log in, to see the code


    Chodzi o pozbycie się 2-krotnego wywołania size....