summaryrefslogtreecommitdiff
path: root/content/digarden/pages/20210519112044-компилируемые_языки_программирования.org
diff options
context:
space:
mode:
Diffstat (limited to 'content/digarden/pages/20210519112044-компилируемые_языки_программирования.org')
-rw-r--r--content/digarden/pages/20210519112044-компилируемые_языки_программирования.org34
1 files changed, 34 insertions, 0 deletions
diff --git a/content/digarden/pages/20210519112044-компилируемые_языки_программирования.org b/content/digarden/pages/20210519112044-компилируемые_языки_программирования.org
new file mode 100644
index 0000000..e7d77d9
--- /dev/null
+++ b/content/digarden/pages/20210519112044-компилируемые_языки_программирования.org
@@ -0,0 +1,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 в ассемблер