Как подключить компилятор intel к visual studio
Компилятор Intel C ++ для Windows использует заголовочные файлы Microsoft Visual C ++, библиотеки и компоновщик. Microsoft контролирует заголовочные файлы, которые определяют пространство имен. Обратитесь в службу технической поддержки Microsoft по поводу соответствия Microsoft стандарту C ++ по этому вопросу … ссылка на сайт
Существует ли руководство Intel (или иное) по замене библиотек на те, которые регулируются визуальная студия к тем, которые предоставлены НКУ (Тоже на моей машине windows). причина, по которой я хочу сделать это, состоит в том, чтобы использовать некоторые из новых функций C ++ 11, которые не поддерживаются в версиях Visual Studio (как это обычно бывает)
Если это невозможно, потому что мое текущее знание вышеизложенного неверно, может кто-нибудь объяснить мне, почему нет.
Решение
Это не практическая возможность.
Компилятор Intel (ICL) не будет делать ничего, кроме стона, если он не сможет найти двоичные файлы VC ++ на PATH , так что вы знаете, что для него нужен как минимум набор инструментов VC ++.
Затем, чтобы увидеть, с чем вы столкнулись, что касается использования заголовков gcc, вы должны сделать следующее:
- Сделайте так, чтобы icl подавлял свои собственные предопределенные макросы.
- Сделайте это, используя предопределенные макросы gcc.
- Сделайте так, чтобы он подавлял стандартное включение поиска.
- Сделайте это, используя стандартный поиск GCC.
Ничего из этого не сложно, и когда вы сделали все это и попытались построить свой HelloWorld.cpp ошибки
покажет вам, что заголовки gcc переполнены встроенными ключевыми словами компилятора gcc, которые
неизвестно к icl: __builtin_va_list , __attribute__ , __cdecl__ , __nothrow__ и так далее.
Вы можете попытаться успешно удалить или переопределить все это с помощью макросов препроцессора.
Или вы могли бы сдаться, и я бы призвал последний.
Резюме
Хоть и на страницах сайта Intel указывается, что Intel C++ ставится под любые
редакции MS Visual Studio 2017 - это не так. В последнем апдейт-ноте скромно
убрали MS Visual Studio 2017 Community Edition . Поэтому выбираем либо
Professional , либо Enterprise . Под 2017 Community Edition не становится!
Ну а кому интересно почитать про "изыскания" - вэлкомъ читать эту тему .
Wound, Киля, пасип! Я уже ставлю IDE и компилятор под винду.
Пока решил развернуть на виртуалке Win7 студию 2017, попробую что присоветовал Киля.
Если получится - написание дров отложу до лучших времен. Ну а если нет . придется эту
тему продолжать
Добавлено 07.02.20, 11:56
Поставил 2017 Комьюнити студию, потом взял да и накатил Intel C++ компилятор.
Установщик сообщал мне долго, мол интегрируюсь в студию, и наконец интегрировался.
Зашел в студию поискать где же выбор чем компилировать.
Хелп. Где место выбора компилера?
ЗЫ: Это не студия, это Вижуал Голливуд!
Добавлено 07.02.20, 12:04
Либо открываешь проект - с расширением *.vcproj/*.sln - и компилируешь. Либо создаешь новый проект, добавляешь туда файлы и компилируешь.
Добавлено 07.02.20, 12:05
File->New->Project - далее выбираешь Visual C++, ну и дальше например Windows Console Application.
Не не не . я дополнительно к студийному мелкосовтовскому компилятору поставил еще Intel C++ компилятор.
Он типа в студию интегрировался. Где-то пролетала инфа как переключаться, чтобы компилил не родной, а
интеловский компилятор. Но я забыл, где это видел. Решил в настройках поискать . где там
Во первых - нафига тебе студия?
Во вторых, если ты захотел ставить студию - то ставь и компилятор еёшний. При установке MSVS2017 - одну галочку ткнуть то надо - Классическая разработка на С++ или как то так там она называется, ну еще язык английский выбрать.
Ставить можно даже Enterpise Edition, ключи есть в интернете их полно, без ключа бесплатная версия будет работать 180 дней.
Да, я сделал проект консольный ХелоВорлд. Собирается. Хочу переключиться
чтобы компилил проект Intel C++ компилер.
Ну смотри значит в меню Tools - может он туда интегрировался. Я таким извращением не занимался никогда. Это примерно как поставить QT Creator, а потом накатывать на него Microsoft Visual C++ компилятор.
Киля, ответь пожалуйста на мой вопрос. А потом я тебе все расскажу, что знаю и не знаю
Смотри справку на этот Intel C++ компилятор, куда он там интегрируется.
Там только появилось это:
Ну раз он встраивается в студию. Значит либо отдельным плагином идет где нибудь в меню Tools, или куда они его засунули? Либо правой кнопкой по проекту - там менюшка вылезет, может они его туда внедрили?
Я просто никогда не ставил Intel C++ на студию, поэтому не знаю куда он там встроился. Откуда ты его взял вообще? Там не написан User Manual?
Знал бы где смотреть, разве бы я спрашивал?
Добавлено 07.02.20, 12:17
Вышесказанное означает, что мы можем взять обыкновенный последовательный код на языке Си/Си++ и начать его постепенно распараллеливать. Для этого нам достаточно включить в проекте поддержку OpenMP. В среде Visual Studio 2005/2008 зайдите в свойства проекта и выберете вкладку C/C++ / Language, как показано на рисунке 1.
Рисунок 1 — Вкладка Visual Studio с настройками проекта, где можно включить поддержку OpenMP
Не забудьте также выбрать платформы и конфигурации, в которых вы планируете использовать OpenMP. Как показано на рисунке 2, мы выбрали все конфигурации (debug, release) и все платформы (Win32, x64).
Рисунок 2 — Выбор конфигураций и платформ, для которых мы устанавливаем параметры
Поддержка OpenMP включается опцией «OpenMP Support» как показано на рисунке 3.
Рисунок 3 — Поддержка OpenMP включена
Вот и все подготовительные шаги, которые необходимы, чтобы начать осваивать технологию OpenMP и распараллеливать программный код. Знакомство с OpenMP мы начнем со следующей заметки. Сейчас мы продолжим знакомство с инструментами. Дело в том, что хотя возможностей Visual Studio 2005/2008 достаточно чтобы разрабатывать параллельные OpenMP программы, это слишком спартанские условия. Для полноценной работы разумно воспользоваться Intel Parallel Studio. Я не сотрудник Intel и за рекламу инструментов мне никто не платит. Parallel Studio действительно удобный и крайне полезный инструмент для разработки параллельных приложений. Рекомендую на основании собственного опыта.
Дистрибутив Intel Parallel Studio занимает порядка 460 Мбайт и доступен для скачивания с сайта Intel. При этом полная функциональность Parallel Studio будет доступна в течении одного пробного месяца, что вполне достаточно, чтобы познакомиться с принципами работы и поэкспериментировать с параллельным кодом. Parallel Studio интегрируется внутрь Visual Studio 2005/2008, добавляя дополнительные пункты меню и в панель инструментов (смотри рисунок 4).
Рисунок 4 — Панели инструментов, добавляемые Intel Parallel Studio в Visual Studio
В следующих параллельных заметках мы будем использовать инструмент IntelParallel Inspector из комплекта Intel Parallel Studio для проверки создаваемого параллельного кода на наличие параллельных ошибок. А также Intel Parallel Amplifier для оптимизации. Компилятор Intel Parallel Composer нам не обязателен, но мы будем компилировать OpenMP приложения им. В качестве преимущества можно назвать поддержку Intel Parallel Composer версии стандарта OpenMP 3.0, в то время как компилятор из Visual Studio 2005/2008 поддерживает только OpenMP 2.0. Также Intel C++ дает некоторые дополнительные возможности по статическому анализу параллельного кода, о чем можно прочитать в статье.
Для компиляции приложения с использованием Parallel Composer следует сделать активным компилятором Intel C++. Это можно осуществить используя кнопку «Use Intel C++» на панели инструментов, как показано на рисунке 5.
Рисунок 5 — Выбор компилятора Intel C++
Попробуйте просто перезапустить Visual Studio, чтобы в силу вступили изменения которые прописывает Parallel Studio в среду окружения. Если и это не поможет, воспользуйтесь ручной установкой окружения, запустив соответствующие командные фалы. Они доступны из меню пуск, как показано на рисунке 7.
Рисунок 7 — Установка настроек среды
Закончим пока на этом первое знакомство с инструментами. Скачивайте и устанавливайте Intel Parallel Studio. Попробуйте собрать какую-нибудь свою простую программу с использованием Intel C++.
Расширение Visual C++ for Linux Development позволяет создавать решения на C++ для серверов, настольных ПК и устройств под управлением Linux. Управлять подключениями к ним можно непосредственно в Visual Studio. VS будет автоматически копировать и удалённо собирать исходный код программ. Также среда позволяет запустить ваше приложение в режиме отладки. Система управления проектами поддерживает создание решений для конкретных архитектур, в том числе APM. Под катом мы расскажем, как начать работу с новыми проектами для Linux.
Пока расширение поддерживает только удалённую сборку на целевом компьютере с Linux. Ограничений на дистрибутив Linux нет, но в системе должны быть установлены определённые инструменты. В частности, вам потребуются openssh-server, g++, gdb и gdbserver. Установите их с помощью любого диспетчера пакетов. Например, в системах, основанных на Debian, для этого можно воспользоваться командой:
Оглавление
Установка
Скачайте расширение Visual C++ for Linux Development или установите его с помощью диспетчера расширений Visual Studio.
Чтобы начать работу, создайте новый проект и выберите Templates > Visual C++ > Cross Platform > Linux.
На данный момент доступны три шаблона: Blink (для устройств Интернета вещей — например, Raspberry Pi), Console Application (консольное приложение, практически пустой каркас для вашего кода) и Empty (пустой шаблон для самостоятельного добавления файлов с исходным кодом и настроек).
Ваш первый Linux-проект в VS
Для начала создадим консольное приложение. Создайте проект на основе этого шаблона и добавьте точку останова на строке printf. Потом нажмите F5 или щёлкните кнопку Remote GDB Debugger. По умолчанию для консольного приложения будет выбрана конфигурация debug/x64. Если архитектура удалённого целевого компьютера — x86 или ARM, то эти настройки нужно будет изменить. В этом примере я буду использовать виртуальную машину x64 Ubuntu.
Поскольку мы впервые собираем решение для компьютера с Linux, среда запросит сведения о подключении. Соответствующая форма открывается при попытке сборки проекта.
Дополнение поддерживает авторизацию по паролю или сертификату, в том числе посредством парольных фраз с сертификатами. Информация об успешном подключении сохраняется для последующих подключений. Чтобы управлять сохраненными подключениями, выберите Tools → Options → Cross Platform → Linux. Да, пароли и парольные фразы хранятся в зашифрованном виде. В будущем обновлении мы собираемся добавить возможность подключения без сохранения данных о нём.
После подключения ваши файлы с исходным кодом будут скопированы на удалённый компьютер Linux, и расширение запустит gcc для их сборки с параметрами, указанными в свойствах проекта. После успешной сборки ваш код запустится на удалённой машине и будет работать, пока не достигнет ранее заданной точки останова.
Свойства проектов Linux
Чтобы понять, где именно на удалённом компьютере Linux развёртываются файлы, заглянем в свойства проекта.
Как указано в Remote settings, по умолчанию в качестве корневой папки на удалённом компьютере используется каталог ~/projects/, а имя удалённого каталога проекта соответствует названию нашего проекта. Если мы просмотрим содержимое каталогов на удалённом компьютере Linux, то найдём main.cpp и файлы, сгенерированные в процессе сборки, в папке ~/projects/ConsoleApplication1.
В разделе General указаны пути к выходному каталогу и промежуточным файлам. Кроме того, как вы видите, для проекта задан тип конфигурации Application. Поэтому исполняемый файл сохраняется в каталог bin/x64/Debug/ под именем ConsoleApplication1.out. Обратите внимание: доступны два других типа конфигурации — статическая и динамическая библиотека.
Окно консоли
Работать с удалёнными исполняемыми файлами можно через окно консоли. В этом окне можно просматривать результат работы программы и вводить входные данные. Чтобы активировать это окно, выберите Debug → Linux Console. Вот как это выглядит на практике.
Ниже приводится код простой программы — воспользуйтесь им, чтобы поработать с консолью самостоятельно.
В свойствах проекта на странице Debugging в поле Command Arguments укажите имя файла. На этой странице также можно изменить рабочую папку, если ваш домашний каталог по какой-то причине не подходит.
IoT-проекты для Linux
Теперь рассмотрим работу с устройством Интернета вещей — Raspberry Pi. Расширение поддерживает любые устройства Pi под управлением Raspbian. В нашем шаблоне Blink мы будем использовать wiringPi — если у вас нет такой системы, её можно установить через apt или из исходного кода. Чтобы добавить подключение, выберите Tools → Options и в поле поиска введите Linux. Теперь нажмите Add, чтобы подключиться к устройству Raspberry Pi.
Откройте свойства проекта и в разделе Build Events найдите категорию Remote Post-Build Events.
В этих параметрах можно задать выполнение команды на удалённом компьютере Linux после завершения сборки. Данный шаблон изначально настроен так, чтобы экспортировать контакт GPIO для светодиодного индикатора — благодаря этому исполняемый файл не потребуется запускать как корень.
Теперь подключите к контакту 17 вашего Raspberry Pi светодиодный индикатор, как показано ниже.
Откройте файл main.cpp и задайте точку останова для вызова delay после первой инструкции digitalWrite. Нажмите F5. При достижении точки останова выполнение приостановится. При этом светодиод будет гореть. Продолжите выполнение кода до следующего вызова digitalWrite. На нём светодиод погаснет.
Как работать с платой Intel Edison посредством расширения VC++ for Linux
Работа с платой Intel Edison посредством расширения VC++ for Linux практически не отличается от использования других систем Linux. В первую очередь необходимо настроить плату в соответствии с инструкциями от Intel. После подсоединения Edison к сети Wi-Fi вы сможете подключиться к нему с помощью нашего диспетчера подключений. Если требуется подсоединиться к Edison напрямую, воспользуйтесь инструкциями по подключению к Edison посредством Ethernet через USB — наш диспетчер подключений поддерживает и такой вариант.
Edison позволяет с лёгкостью начать создавать IoT-приложение, которое обрабатывает данные от датчиков. Такие устройства, как платы расширения Arduino, позволят без проблем подключать дополнительные модули, например, плату расширения Grove от Seeed Studios. Эта плата расширения поможет работать с множеством доступных датчиков Grove, не заботясь о разводке проводов для подключения к макетной плате, — вы сможете сразу приступить к написанию кода. Компания Intel выпустила библиотеку датчиков UPM, которая делает задачу ещё проще: она обеспечивает поддержку широкого спектра датчиков, в том числе Grove.
На изображении показан вычислительный модуль Edison на схеме Arduino с подсоединенной платой расширения Grove и подключенным датчиком температуры.
Создайте в Visual Studio новый проект. Выберите VC++ → Cross Platform → Linux → Empty Project. При сборке решений для Edison в качестве платформы решения нужно выбрать x86. Добавьте в проект файл C++. Воспользуйтесь кодом из примера Grove Temperature Sample от Intel. Библиотеки UPM включены в образ Yocto Linux, который используется в Edison по умолчанию, поэтому дополнительно их устанавливать не нужно. Измените параметры include, указав соответствующее расположение файлов.
После этого код можно будет собрать и выполнить. Здесь показан результат работы этого примера в режиме отладки Visual Studio. Возможно, вас смутила первая строчка вывода. Дело в том, что первая попытка чтения данных с датчиков этого типа обычно дает не совсем точный результат.
Чтобы включить IntelliSense, следуйте инструкциям ниже. Вам потребуется скопировать подключаемые файлы с Edison в локальную среду. Пока IntelliSense работает с ошибкой, которая проявляется в этом примере. В будущем обновлении это будет исправлено.
Классические приложения
Итак, мы рассмотрели создание приложений для систем без мониторов и для специализированных устройств под управлением Linux. Но как же настольные ПК? Мы подготовили для вас кое-что особенное. Сейчас мы запустим приложение OpenGL на настольном ПК под управлением Linux. Вначале убедитесь, что ваш ПК с Linux должным образом настроен для разработки OpenGL-решений. Мы использовали следующие пакеты apt: libgles1-mesa, libgles1-mesa-dev, freeglut3, freeglut3-dev.
В поле Linker Input укажите зависимости библиотек: «m;GL;GLU;glut».
Убедитесь, что в настройках удалённого подключения указан нужный компьютер.
Теперь нажмите F5.
Чтобы получить интересные результаты, можно поместить точку останова примерно на строку 80, где задаётся вращение куба (попробуйте изменить значение alpha), или на вызов KeyboardFunc, где можно просматривать значения нажатой клавиши.
Шаблон проекта Makefile
Шаблон проекта Makefile позволяет использовать на удалённом компьютере внешние системы сборки (make, gmake, CMake, сценарии bash и тому подобное). Это работает примерно так: на странице свойств проекта C++ вы можете настроить локальные пути Intellisense, затем на странице свойств удалённой сборки добавить команды (разделённые точкой с запятой), инициирующие вашу сборку на удалённом компьютере. В этом примере мы переходим в удалённый каталог, где находится сценарий сборки, и запускаем его.
Здесь объединены несколько сценариев bash, которые способны генерировать проект файла makefile на основе ваших файлов с исходным кодом с учётом структуры каталогов. В этих сценариях предполагается, что исходный код на компьютере Linux находится в каталоге, который сопоставлен Windows. Они устанавливают новый флаг в свойствах проекта, чтобы не копировать файлы удалённо. Вряд ли такой вариант подойдёт для всех задач, но он должен стать хорошей отправной точкой для крупного проекта.
Советы по использованию
Советы из этого раздела помогут вам эффективнее использовать расширение.
Подробный журнал сборки
Где взять подключаемые файлы
Все любят IntelliSense, но синхронизацию подключаемых файлов из вашей системы Linux мы пока не реализовали. Все передают и копируют эти файлы по-своему, и это хорошо. Мы расскажем об очень простом способе: просто копируйте всю папку в локальную систему Windows через PSCP.
Теперь откройте свойства проекта, перейдите в раздел VC++ Directories и добавьте локальный путь.
Управление копированием удалённых файлов
На уровне файлов и проектов можно указать, требуется ли удалённо копировать файл. Благодаря этому вы можете использовать имеющиеся механизмы сборки, просто сопоставив существующие ресурсы локально и добавив их в ваш проект для редактирования и отладки.
Переопределение пути к компилятору C/C++
В окне Property Pages вы можете переопределить команды компилятора, которые будут использоваться на удалённом компьютере. Так при необходимости вы сможете выбрать конкретные версии GCC или даже другой компилятор — например, clang. Можно указать как полные пути, так и доступные команды.
События сборки
В разделе Build Events свойств проекта доступны новые типы событий — запускаемые перед сборкой и компоновкой, а также средства копирования произвольных файлов при любых событиях сборки. С помощью этих инструментов вы можете гибко управлять процессом.
Варианты отладки
Расширение поддерживает не только gdbserver, но и режим gdb, который позволяет повысить совместимость, если подходящих бинарных файлов клиента gdb для удалённой цели в Windows нет.
Кроме того, вы можете переопределить саму команду отладчика. Это удобно для отладки внешних программ, сборка которых была выполнена не в VS.
Цель статьи — провести начинающего за руку по первому UEFI проекту, оставаясь в привычной ему среде. Для более опытных людей, надеюсь, будет интересным поработать в VS вместо привычной командной строки, или разобрать подход и перенести его в любимый Eclipse.
Начнем с простых вещей, вывода строки на консоль и русификации (довольно востребованная вещь, причем простая в реализации), потом будет работа с формами в HII (то, что называлось в обиходе страницами BIOS Setup), потом графика, потом Boot Manager, а потом видно будет (с).
Желающие — прошу пожаловать под кат.
Сейчас необходимо решить, оно вам надо или нет. Потратим на это пол-страницы на старте, чтобы не тратить пол-дня и в конце понять, что вам надо совсем другое. Или, надеюсь, наоборот — загореться энтузиазмом и выкроить время на прочтение статьи.
Вначале хорошее
1) Аппаратура не понадобится от слова совсем. Никаких Evaluation Boards, никаких Intel BlueBox JTAG за $3000. Все будет отлаживаться в 32-битной виртуальной машине OVMF – портированной Интелом виртуалке qemu для отладки UEFI Firmware. Для перекомпиляции под реальную платформу достаточно потом — после отладки — переставить пару ключей в настройках компиляции, и на этом все.
3) Файловая система виртуалки доступна на Windows-машине для записи-чтения. Очень пригодится, если надо будет редактировать скрипты UEFI Shell, после запуска посмотреть скриншоты и проанализировать логи средствами Windows.
4) Никакого ассемблера, только С/С++.
Теперь о том, что мы делать не будем
1) Мы будем работать в DXE (где уже есть UEFI Shell) и поздних фазах. В более ранние фазы не полезем, поскольку нас туда никто не пустит, по крайней мере – для Intel-процессоров. Позже будет объяснение, почему. Если хотите сделать полный цикл, от включения до загрузки ОС, причем быстро и не забивая голову кучей ненужной и неинтересной вам в данный момент информацией, а ручное конфигурирование системы вам совершенно не требуется – дальше не читайте, а наберите в Гугле «coreboot».
2) «Графического» UEFI с мышкой и кнопками, как у Dell, MSI и прочих, здесь не будет. Это платные среды, для использования в крупных компаниях. Есть, разумеется, энтузиасты, которые сами создают их своими руками, не ответив предварительно на вопрос «Зачем?», но обычно их энтузиазм заканчивается на второй форме с кнопками.
3) Мы будем работать с компилятором Visual Studio. Желающие могут настроить gcc в cygwin, или icc, но в данный момент не стоит задача получить оптимальный быстрый код, а стоит задача быстро пройти путь к началу полноценной работы.
Все, предварительные танцы закончены, кто надо – воодушевлен, кто надо – напуган.
Переходим к делу
Итак, у кого на машине есть git в командной строке, выполняют команду в cmd окне (или в Far Commander, не суть) из корневого каталога:
а те, у кого нет, идут по ссылке на github, скачивают zip-файл и раскрывают его в каталог с:/FW.
Как было ранее обещано, приведем подсказку из Интеловского тренинга по использованию другой конфигурации, отличной от указанной в начале статьи. Ищите свое сочетание в табличке, если предлагаемое по каким-то причинам не подходит:
Конфигурирование среды для версии, отличной от VS2010
Открываем файл c:\FW\edk2\Conf\target.txt и в строчке
TOOL_CHAIN_TAG = VS2010x86
Заменяем VS2010x86 на тэг установленной у вас версии Visual Studio. Для Visual Studio 2010 тэг останется как есть, для других версий VS – смотрите картинку выше, или список в начале файла c:\FW\edk2\Conf\tools_def.txt
Собственно, среда разработки edk2 развернута полностью и в ней можно работать из командной строки. Некоторые так и работают всю жизнь («угорать по хардкору, поддерживать дух старой школы и всё такое» — (с) CodeRush в своей ставшей классической статье). Но мы все же пойдем дальше, пересаживать человека из MSVS обратно в командную строку — негуманно, особенно в 2017.
Настраиваем проект в Visual Studio
Открываем Visual Studio, в нем открываем Solution NT32.sln из каталога C:\FW\VS\NT32. В целях уменьшения времени входа в тему, в solution уже создан одноименный проект NT32, в котором уже сделаны описанные ниже настройки. Это если не получится создать самим – чтобы иметь гарантированно рабочие настройки проекта. Такой подход сильно сократит время поиска источника проблем, в случае их появления. Тем не менее, лучше пройти описанный ниже путь самим, и понять смысл настроек – это облегчит настройку следующих проектов.
Полезно будет сразу в Tools->Options настроить рабочий каталог на c:\FW\VS, но если в VS ведется другой, рабочий проект, то так делать не надо:
Создание проекта
Создаем в Solution NT32 новый проект для Visual C++ (правой клавишей на Solution NT32, Add->New Project, выбираем опцию Makefile Project), и назовем его MyFirstUEFIProject (или как угодно еще). Жмем Finish.
Выбираем в Solution проект NT32, выбираем из контекстного меню Project->Properties и производим настройки проекта.
Настройка NMake опций
Выбираем в окне слева строку Configurarion Properties → NMake, в окне справа — строку Build Command Line
Жмем Edit… и в открывшемся текстовом окне вводим:
Сейчас стоит немного объяснить, что мы делаем. По сути, мы пишем в этом окне обычный пакетный bat-файл вместо makefile.
В первой строке устанавливается переменная окружения ассемблера NASM_PREFIX в том виде, как ее понимает edk2, то есть путь, по которому лежит файл nasm.exe. На ассемблере мы сами писать не будем, но нашей системе сборки ассемблер нужен обязательно.
Во второй строке вызывается скрипт настройки среды edk2 и настраиваются переменные окружения для данного сеанса компиляции и запуска (вне VS эти переменные не отражаются). Ключ –nt32 указывает системе сборки, что компилировать исходники надо для пакета (package) Nt32Pkg, расположенного в C:\FW\edk2\Nt32Pkg. Этих пакетов там много, мы их рассмотрим, но не сейчас.
В третьей строке мы даем команду на компиляцию в только что настроенной среде (build.exe лежит в C:\FW\edk2\BaseTools\Bin\Win32, этот путь прописывается в предыдущей строчке, в edksetup.bat)
Итак, вот что у нас должно появиться в итоге в текстовом окне Build Command Line:
Затем вводим в следующей строке Rebuild Command Line в открывшееся по Edit … окно следующий текст
Команда build clean означает то самое, что вы предполагаете. Она делает полную перестройку проекта с перекомпиляцией всех модулей.
Что мы вводим в окне из Clean Command Line, наверное, все уже догадались:
Честно говоря, особо эта опция не нужна, в 99% случаев хватит Rebuild, но пускай будет – например, очистить среду для ее переноса в другое место или заливки на github.
В итоге, у нас должно получиться вот такое окно:
Все с настройкой NMake.
Настройка опции Debugging
Итак, открываем строчку Debugging и вводим:
В строчке Command:
В строчке “Working Directory”:
SecMain.exe – объяснять сейчас, что это такое – долго, если очень кратко и упрощенно – то это аналог bootloader-a, который запускает все остальное.
Рабочий каталог – сюда будут помещаться все успешно созданные модули, и доступны они будут все сразу из командной строки.
Итак, вот что мы должны получить после настроек в этом окне:
На этом все с настройками проекта.
Построение проекта
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
Если же вместо этого получено что-то иное, смотрите, правильно ли вы прошли все шаги. Наиболее тяжелый случай – получить:
LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt
это баг среды VS2010 и означает, что VS2010 установлен без SP1. Поставьте SP1, или ищите способы затыкания этой ошибки в инете.
Работа в UEFI Shell
Итак, все скомпилялось хорошо, и вы читаете эти строки. Теперь жмем на любимую F5 и после примерно минуты работы с диском (чуть позже сократим и это время) получаем вот такую требуемую картинку:
Собственно, это и есть UEFI Shell. Как в нем работать – написана куча руководств, посмотрите в Гугле, а мы пока сделаем в нем несколько вещей.
1. Смотрим, что мы там накомпиляли за эти 10 минут. Вводим fs0: (UEFI Shell нечувствителен к регистру) и затем ls –b, где опция –b означает ожидание нажатия Enter для прокрутки страницы, ибо список там большой, не на один экран.
Теперь стало понятно, что означал параметр “Working Directory” в настройке опций проекта Visual Studio — C:\FW\edk2\Build\NT32IA32\DEBUG_VS2010x86\IA32\. Там этот же самый список файлов, и лучше его смотреть (и редактировать скрипты) через развитую оболочку Far Commander (или Total Commander), чем с командной строки в UEFI Shell.
2. В UEFI Shell и набираем “hel”, жмем Tab и видим на экране Helloworld.efi. Не то, чтобы мы совсем не догадывались, что будет, если нажать после этого Enter, но проверить-то надо! Жмем и получаем троекратное UEFI Hello World!. Число повторений – это конфигурируемый в настройках среды (а не в исходниках) внешний параметр и мы будем эту конфигурацию потом разбирать.
3. Набираем exit и попадаем в наше любимое и знакомое окно:
Ну вот, можно любоваться на плоды своих трудов. После этого стрелками гоним фокус на Reset и виртуалка закрывается, возвращая нас в знакомое окно MSVC.
Выводим свою строку
Создание полностью своего приложения потребует достаточно много настроек, которые лучше будет рассмотреть в следующей статье — иначе получится большой объем, а длинные простыни никто не читает. Однако же в заголовке этой статьи написано «Программирование», а мы пока занимались только настройкой. Чтобы сдержать обещание, давайте в этой статье сделаем очень простую модификацию приложения HelloWorld, используя его имеющийся набор файлов, а в следующей статье создадим свой, при помощи Интеловской утилиты UEFI Driver Wizard, поскольку прогонять начинающих по полному циклу создания набора файлов для UEFI драйвера (или приложения) — это нечеловеколюбиво, дико рутинно и несет риск потери 90% аудитории. Если человека зацепит — он сам к этому придет со временем, а если хочется просто поиграться — нет смысла тратить на это кучу времени, благо многое давно уже делается автоматически через UEFI Driver Wizard, причем по фэн-шуй, чего от новичка ждать наивно.
Итак, открываем в Visual Studio файл
C:\FW\edk2\MdeModulePkg\Application\HelloWorld\HelloWorld.c
И добавим свою простую строчку, сразу после объявления переменных в единственной функции:
Разумеется, текст можно заменить на что угодно, только английскими буквами — русский шрифт edk2 еще не понимает, мы добавим его в следующих статьях. Можете поставить на эту строку обычный breakpoint и посмотреть, как себя поведет Visual Studio.
Жмем F5, после компиляции и устранения ошибок вводим «fs0:», HelloWorld.efi и получим такой вывод:
На этом все. В следующей статье мы немного поработаем в UEFI Shell, чтобы освоиться, и разберем немного теории.
Читайте также: