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

  Рет қаралды 1,889

Coders School

Coders School

2 жыл бұрын

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 жыл бұрын
Jak zawsze materiały krótkie zwięzłe i na temat.
@ukasz9358
@ukasz9358 Жыл бұрын
* Metoda print
MISS CIRCLE STUDENTS BULLY ME!
00:12
Andreas Eskander
Рет қаралды 17 МЛН
Gym belt !! 😂😂  @kauermtt
00:10
Tibo InShape
Рет қаралды 16 МЛН
Nastya and SeanDoesMagic
00:16
Nastya
Рет қаралды 29 МЛН
Playing hide and seek with my dog 🐶
00:25
Zach King
Рет қаралды 33 МЛН
Pomysł na biznes | Dawid Pajerski Podcast #32
12:48
Dawid Pajerski
Рет қаралды 619
Zarządzanie zasobami 3: pamięć - stos vs. sterta
8:47
Coders School
Рет қаралды 2,4 М.
Programowanie Cpp #34 klasy   konstruktor kopiujący
34:57
Aitra
Рет қаралды 3,4 М.
A quick tutorial on the Logic Friday 1 Software
10:00
Blue Tech
Рет қаралды 3 М.
Budowanie Zespołu, Który Wygrywa | Dawid Pajerski Podcast #30
16:55
MISS CIRCLE STUDENTS BULLY ME!
00:12
Andreas Eskander
Рет қаралды 17 МЛН