blob: e7d77d9f38233f84f5742a36d76c522737fd183c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
:PROPERTIES:
:ID: 5346da1a-6f67-4919-ac90-fd1a0b4c68f3
:END:
#+title: Компилируемые языки программирования
* Компилируемые языки программирования
[[https://youtube.com/watch?v=sIlPn7JD1Ug][GNU Toolchain]]
[[https://youtube.com/watch?v=OnEF1MexJlI][GCC and Makefiles]]
Этапы компиляции [[id:40c44577-6cd7-4eac-aac7-288a0537b7e9][языка Си]]:
1. Препроцессор
- Макросы в компайл тайме
- Расширение .i
- gcc -E
2. Компиляция
- Переводит язык Си в язык Ассемблера
- Расширение .s
- gcc -S
3. Сборка (Assembly)
- Переводит язык Ассемблера в нечитаемый для человека байткод
- Называются объектными файлами
- В них существуют "дырки" (holes).
Скажем при вызове printf скомпилированный объектный файл ещё не будет
знать откуда printf брать.
- Расширение .0
- gcc -c
4. Линковка
- Соединяет объектные .o файлы воедино
- Заполняя в них "дырки" (holes)
- Выдаёт на выходе исполняемый бинарный файл
- gcc (без флагов)
Ресурсы:
- [[https://godbolt.org][Godbolt]] :: сайт с выводом компиляторов C в ассемблер
|