Narzędzia programisty 7: jak wygląda proces kompilacji?

Поделиться
HTML-код
  • Опубликовано: 10 мар 2022
  • W kolejnym filmiku z serii „Narzędzia programisty” zaczniemy temat kompilatorów i omówimy sobie trzy fazy kompilacji. Niech Cię nie wystraszy ilość strzałek na tablicy! Co prawda od kompilacji blisko do komplikacji, ale postaramy się wszystko wytłumaczyć w możliwie najjaśniejszy sposób 😉
    A tutaj mała ściąga:
    Preprocessing:
    ● wykonywanie dyrektyw #include
    ● #define (makra)
    ● #ifdef / #ifndef
    ● #pragma once
    ● konkatenacja literałów znakowych
    ● wynik - obrobiony plik źródłowy *.cpp
    ● g++ -E file.cpp - zakończy „kompilację” pliku file.cpp po etapie preprocessingu
    Kompilacja:
    ● analiza składniowa programu
    ● obliczanie rozmiarów typów, parametrów, zmiennych, …
    ● dopasowywanie przeciążeń funkcji
    ● próba podstawień parametrów szablonów
    ● każdy plik cpp kompilowany jest oddzielnie od innych
    ● wynik - skompilowany w kodzie maszynowym plik obiektowy *.o
    ● g++ -c file.cpp - zakończy kompilację pliku file.cpp bez etapu linkowania
    Linkowanie (konsolidacja):
    ● łączenie wywołań funkcji z ich implementacjami z różnych jednostek kompilacji
    ● wynik - gotowa binarka (*.exe, bin) lub biblioteka (*.a, *.so, *.dll)
    Optymalizacje:
    ● optymalizacje są wykonywane już na etapie kompilacji, ale także na etapie linkowania (Link Time Optimization - LTO)
    ● usprawnianie i przyspieszanie kodu
    ● poszukiwanie znanych wzorców w kodzie
    ● g++ -O3 file.cpp - agresywne optymalizacje dla pliku file.cpp
    ● g++ -flto file1.cpp file2.cpp - włączenie LTO
    Więcej narzędzi programisty znajdziesz na naszym kanale, ale to nic przy tym, co mamy do zaoferowania na naszym kursie.
    Sprawdź kurs C++ w Coders School i poznaj narzędzia przydatne w pracy programisty:
    👉 coders.school/narzedzia-progr...
    Zostań ninją C++!

Комментарии • 2

  • @rostefx
    @rostefx 2 года назад +1

    Jak zawsze materiały krótkie zwięzłe i na temat.

  • @ukasz9358
    @ukasz9358 Год назад

    * Metoda print