- Компиляция C/C++ на Apple M1
- Компиляция и сборка в Visual Studio для Mac
- Создание в интегрированной среде разработки
- How to install gcc compiler on Mac OS X
- Solution
- 1. Register Apple Developer Account
- 2. Command Line Tools for Xcode
- 3. Installation
- 4. Verification
- 5 Ways to Write C++ Code on Your Mac
- Scope of Article
Компиляция C/C++ на Apple M1
Заинтригованный впечатляющими бенчмарками M1, я достал последний Mac Mini, чтобы замерить скорость компиляции на C/C++.
Измеряем локальный build2 (без репозитория пакетов), который включает преимущественно код на C++ (611 единиц трансляции) с некоторыми блоками на C (29) и связками между ними (19). Такой бенчмарк требует только компилятора C++ и входит в тестовый набор Phoronix, поэтому можно сравниться с большим количеством процессоров.
Бенчмарк Phoronix в настоящее время использует build2 0.12.0, у нас 0.13.0 (текущий релиз), здесь сборка выполняется примерно на 10% медленнее.
После настройки Mac OS и установки инструментов командной строки для XCode 12.2 у нас есть всё необходимое:
Судя по _LIBCPP_VERSION в заголовке __version файла libc++ , эта версия Apple Clang ответвилась от ванильного Clang где-то в процессе разработки 10.0.0.
Возможно, вы также заметили, что название процессора в триплете Apple Clang отличается от стандартного aarch64 . На самом деле config.guess показывает следующее:
Чтобы не использовать два названия для одного и того же, build2 канонизировал arm64 в aarch64 , поэтому в buildfiles мы всегда видим aarch64.
Проверим количество аппаратных потоков в sysctl :
Здесь 8 потоков, это 4 производительных ядра и 4 энергоэффективных. В первом прогоне задействуем все ядра. Очевидно, это даёт наилучший результат:
Приятным сюрпризом оказалось то, что build2 0.13.0 заработал без особых проблем, хотя он вышел раньше M1. Поскольку в ARM слабое упорядочение памяти, это также послужило дополнительной проверкой многопоточной реализации build2 и интенсивного использования атомиков.
Для начала сравним M1 с моей рабочей станцией на 8-ядерном Intel Xeon E-2288G (по сути, i9-9900K плюс ECC). Та же сборка на ванильном Clang занимает 131 с. Хотя это лучший результат, но производительность M1 всё равно впечатляет. Особенно если учесть, что во время компиляции рабочая станция буквально изрыгает горячий воздух и гудит как самолёт, а М1 тихо шуршит с едва заметным потоком тёплого воздуха.
Однопоточный бенчмарк оценивает производительность CPU в инкрементальных билдах:
Ядро E-2288G справляется за 826 секунд. Таким образом, ядро Xeon на 5 ГГц на самом деле медленнее, чем ядро M1 на 3,2 ГГц.
Еще один интересный результат — четырёхпоточный прогон, который использует только производительные ядра М1:
Хотя он несколько медленнее восьмиядерного теста, но зато использует меньше памяти. Таким образом, такой вариант имеет смысл на системах с недостатком оперативной памяти (как на всех современных машинах M1).
Вот краткое изложение всех результатов:
Понятно, что во многих отношениях это сравнение яблок с апельсинами (рабочая станция против мобильного устройства, старый дизайн и техпроцесс против самого современного и т. д.)
Теперь добавим несколько интересных результатов из бенчмарка Phoronix. В частности, уместно взять показатели новейших рабочих станций и мобильных процессоров Intel и AMD. Вот моя подборка (можете составить собственную, только не забудьте добавить дополнительные 10% к результатам Phoronix; также обратите внимание, что в большинстве тестов используется GCC вместо Clang):
Обратите внимание, что результаты для лучших мобильных Intel (1185G) и AMD (4900HS), к сожалению, ещё не доступны, и приведённые цифры экстраполированы на основе частоты и других бенчмарков.
Из приведённой выше таблицы легко понять, что Apple M1 — впечатляющий процессор, особенно с учётом энергопотребления. Более того, это первый общедоступный ARM-процессор настольного класса. Для сравнения, та же сборка на Raspberry Pi 4B занимает 1724 секунды, то есть более чем в 10 раз медленнее! Хотя мы не можем тут загрузить Linux или Windows, но есть некоторые свидетельства, что они работают на виртуальных машинах с приличной производительностью. В итоге, конвейер непрерывной сборки на базе ARM может стать стандартным.
Увидев бенчмарки M1, невольно задаёшься вопросом, как Apple такое удалось. Хотя есть много спекуляций с некоторыми элементами чёрной магии и колдовства, но вполне хорошим источником технической информации мне показалась эта статья о M1 на Anandtech (и ещё одна там по ссылке). Основные моменты:
Процесс TSMC 5 нм
По сравнению с интеловскими 10 нм (для 11x5G, 14 нм для E-2288G) и 7 нм у AMD/TSMC.
LPDDR4-4266 RAM
Только новейшие мобильные процессоры от Intel и AMD работают с такой быстрой памятью.
Большой кэш L1
У M1 необычно большой кэш L1 для команд и данных.
Большой и быстрый общий кэш L2
В отличие от процессоров Intel и AMD, которые используют отдельные кэши L2 меньшего объёма и большой, но более медленный общий кэш L3, в процессоре M1 реализован быстрый и большой общий кэш L2.
Широкое ядро
У M1 необычайно «широкое» ядро, которое выполняет несколько инструкций параллельно и/или не по порядку. Есть предположение, что из-за слабого упорядочения памяти ARM и кодирования команд фиксированного размера, Apple смогла сделать гораздо более широкое ядро.
Источник
Компиляция и сборка в Visual Studio для Mac
Visual Studio для Mac можно использовать для сборки приложений и создания сборок во время разработки проекта. Необходимо часто компилировать код, чтобы оперативно выявлять несоответствия типов, ошибочный синтаксис, неверно написанные ключевые слова и другие ошибки времени компиляции. Выполняя сборку и последующую отладку, можно также находить и исправлять ошибки времени выполнения, связанные с логикой, операциями ввода-вывода и делением на ноль.
Успешная сборка — это правильный синтаксис исходного кода и корректное разрешение всех статических ссылок на библиотеки, сборки и другие компоненты. При сборке создается исполняемый файл приложения. Затем этот исполняемый файл можно протестировать в ходе отладки и различных ручных и автоматических тестов, чтобы проверить качество кода. После полного тестирования приложения вы можете скомпилировать версию выпуска для развертывания у клиентов.
На компьютере Mac для сборки приложения можно использовать любой из следующих методов: Visual Studio для Mac, средства командной строки MSBuild или Azure Pipelines.
Метод построения | Преимущества |
---|---|
Visual Studio для Mac | — Немедленное создание сборок и тестирование их в отладчике. — Запуск многопроцессорных сборок для проектов C#. — Настройка различных аспектов системы сборки. |
Командная строка MSBuild | — Сборка проектов без установки Visual Studio для Mac. — Запуск многопроцессорных сборок для всех типов проектов. — Настройка большинства аспектов системы сборки. |
Azure Pipelines | — Автоматизация процесса сборки в рамках конвейера непрерывной интеграции или поставки. — Применение автоматических тестов для каждой сборки. — Использование практически неограниченных облачных ресурсов для процессов сборки. — Возможность изменения рабочего процесса сборки и создания процедур сборки с подробно настраиваемыми задачами. |
В этом разделе подробно рассматривается сборка на основе IDE. Чтобы создавать приложения из командной строки без установки Visual Studio для Mac, можно установить последнюю версию пакета SDK для .NET Core. Дополнительные сведения о создании приложений с помощью командной строки см. в статье о MSBuild. Дополнительные сведения о создании приложений с помощью Azure Pipelines см. в этой статье.
Этот раздел относится к Visual Studio для Mac. Сведения о Visual Studio для Windows см. в этой статье.
Создание в интегрированной среде разработки
Visual Studio для Mac позволяет мгновенно создавать и запускать сборки, а также сохранять контроль над функциями сборки. При создании проекта Visual Studio для Mac определяет конфигурацию сборки по умолчанию, которая задает контекст для сборок. Можно изменять конфигурации сборки по умолчанию, а также создавать собственные. Создание и изменение конфигураций приводит к автоматическому обновлению файла проекта, который затем используется в MSBuild для сборки проекта.
Дополнительные сведения о сборке проектов и решений в интегрированной среде разработки см. в разделе Сборка и очистка проектов и решений.
Visual Studio для Mac также можно использовать для выполнения следующих задач:
Изменение выходного пути. Он настраивается в параметрах проекта:
Изменение уровня детализации для результатов сборки:
Добавление настраиваемых команд до, во время или после сборки или очистки:
Источник
How to install gcc compiler on Mac OS X
By mkyong | Last updated: August 29, 2012
Viewed: 400,908 (+568 pv/w)
Often times, you need c or gcc compiler to compile open source projects in Mac OS X. The problem is Mac OS X doesn’t install the gcc compiler by default.
If you try to install or compile some projects that required c/gcc compiler, following errors message will be logged :
In terminal, type “ gcc “, you will get message “command not found”.
Solution
To install gcc compiler on Mac OS X, you need to download and install “Command Line Tools for Xcode”, which is available in Apple’s developer page. See following steps :
1. Register Apple Developer Account
Access Apple’s developer page, to process on the download, you need to register an Apple account, it’s free, but need to spend few minutes to fill in the survey.
2. Command Line Tools for Xcode
In Apple developer page, “Developer Tools” category, find “Command Line Tools for Xcode“, choose your version and click on the xx.dmg file (file size is 100mb ++) to start the download.
3. Installation
After .dmg file is downloaded, a small dialog will be prompted and show you this file – “Command Line Tools.mpkg“, just double click on it, follow the wizard guide to complete the installation.
4. Verification
After installation is completed, run “ gcc -v ” in terminal again. If everything fine, following output will be displayed.
Done, the gcc version 4.2.1 is installed on Mac OS X successfully.
Источник
5 Ways to Write C++ Code on Your Mac
This article is intended primarily for students leaning C++ for the first time on a Mac. It’s not a step-by-step tutorial on how to write and compile code in the applications described. That will require digging in and mastering the mechanics of each method described. Rather, it’s a quick start guide that points to the basics and provides simple examples of how C++ coding can be accomplished on a Mac.
Yes, there are lots of ways to write C++ on a Mac
Scope of Article
All of the solutions provided can be used in the writing of the kinds of code beginners write: 20 to 50 lines of code that assist with the learning of C++. Stdin and stdout are the focus. Others can do much more. The writing of a full-featured GUI app for macOS is not covered.
The article could also be used by professionals who’ve already been doing professional C++ on, say, a corporate Linux system. However, it may not be clear how to get started and which tools to use in a transition to a Mac.
This article provides an overview of five good ways to write C++ on a Mac. There may be more. Most discussed are free, but one incurs a modest cost. Some are full featured, and some have limitations. For example some solutions presented don’t lend themselves to debugging thanks to decisions Apple has made. For all these reasons, it’s hard to rank the various solutions by some standard. After you’ve read about them, it may well be that one is the obvious way to proceed initially. See the spreadsheet on page 6.
First, a bit of nomenclature. We’ll talk here about an Integrated Development Environment (IDE). From Techtarget:
An integrated development environment (IDE) is a software suite that consolidates the basic tools developers need to write and test software. Typically, an IDE contains a code editor, a compiler or interpreter and a debugger that the developer accesses through a single graphical user interface (GUI).
What follows is a thumbnail sketch of each approach. As always, it’s up to the student to install and learn the nuances of each one. We’ll provide merely a grand tour and some overall guidance.
Finally, in the screen shots below, for clarity, the important area only is shown. That’s because showing the entire window often makes the key region too small to read.
1. Apple’s Xcode IDE
As mentioned above, Apple’s Xcode is a free, full featured IDE for native apps. However, it’s not very hard to press it into service for beginning C++ code on a Mac, and it includes a GUI debugger.
Note that Xcode is designed specifically for developers to write macOS, iOS, tvOS and watchOS applications in Swift or Objective-C. Because of that, it’s not widely used in industry or education as a C++ development system. In those situations, the focus is on Linux and Java-based IDEs. But Xcode is free, powerful and turns out to be amazingly useful for the student with a Mac.
All you need is a (free) AppleID and then you can download it from the Mac App Store found in macOS: Apple Menu > App Store. The latest version as of this writing is 8.3.3 and is designed to work with macOS Sierra.
Xcode in Mac App Store
1.1 After you install Xcode, there will be an app in /Applications called Xcode.app. When you lunch it, you’ll see:
1.2. Select “Create a new Xcode Project.” Then click on “Command Line Tool.”
Select the “Command Line Tool.”
1.3. Fill in the various fields, as you wish, and select C++ from the Language popup.
1.4. At this point, you’ll need to learn about how to enter code into the editor, build (compile and link), display the stdin/stdout and debug windows, and run the app. Here’s how it looks with some sample C++ code designed to calculate the area of a rectangle..
C++ in Xcode with input and output (bottom right).
A final note. You’ll be able to create breakpoints and display variables in Xcode like this:
Xcode debug with breakpoint and variables shown.
For the beginning C++ student who is familiar with the Mac, this is a great way to go. But there are more options, so off we go.
Next: Method #2 – Install Linux as a Virtual Machine in macOS.
Источник