Репозиторий для сдачи лабораторных работ по курсу Введение в теорию трансляторов
Применяемый стек технологий: C++, LLVM, cpuset
- lab_01 - Peephole-оптимизация
- lab_02 - Оптимизация инвариантного кода цикла
- lab_03 - Векторизация
- lab_04 - Проверка стиля языка C
- Устанавливаем WSL
- На оффициальном сайте достаточно подробно написано то, как установить WSL
- Совет: лучше ставить WSL2 (т.е. вторую версию). О плюсах и минусах каждой версии можно прочитать здесь
- Совет: для более удобного начала работы c WSL лучше поставить Ubuntu 18.04 и Windows Terminal
- Скачиваем репозиторий проекта LLVM ("стабильной" 11-ой релизной версии) с GitHub и переходим в него:
>> git clone https://github.com/llvm/llvm-project.git -b release/11.x >> cd llvm-project
- Подготовка папок и cmake к сборке:
>> mkdir build >> cd build >> cmake -DLLVM_ENABLE_PROJECTS="clang;libcxx;libcxxabi;opt" -G "Unix Makefiles" ../llvm
- Готовим дополнительный файл подкачки (16 Гб):
- Внимание: крайне рекомендуется использовать дополнительный файл подкачки. Без него возможны падения при сборке Clang (приблизительно на 94% сборки) из-за недостаточного размера оперативной памяти
>> sudo fallocate -l 16G /swapfile >> sudo chmod 600 /swapfile >> sudo mkswap /swapfile && sudo swapon /swapfile
- Собираем LLVM + Clang:
>> make
- Внимание: крайне не рекомендуется использовать ключ
-jN
(make -jN
, N - число потоков) для параллельной сборки. Возможны падения, вызванные, скорее всего, гонкой данных (может не успеть собраться то, что идёт в include другому файлу, который уже собирается)
- Внимание: крайне не рекомендуется использовать ключ
- Убираем дополнительный файл подкачки после сборки:
>> sudo swapoff /swapfile >> sudo rm /swapfile