Процесс компиляции программ на c++
Содержание:
Введение
GNU Compiler Collection (обычно используется сокращение GCC) — набор компиляторов для различных языков программирования, разработанный в рамках проекта GNU. GCC является свободным программным обеспечением, распространяется фондом свободного программного обеспечения (FSF) на условиях GNU GPL и GNU LGPL и является ключевым компонентом GNU toolchain. Он используется как стандартный компилятор для свободных UNIX-подобных операционных систем.
Изначально названный GNU C Compiler поддерживал только язык Си. Позднее GCC был расширен для компиляции исходных кодов на таких языках программирования, как
C++, Objective-C,
Java, Фортран, Ada, Go, GAS и D.
С версии 4.2.2 GCC перешёл на лицензию GPLv3.
Past news
Jan 27th, 2021: SDCC 4.1.0 RC1 released.
SDCC 4.1.0 Release Candidate 1 source, doc and binary packages for amd64 GNU/Linux, 32 and 64 bit Windows and amd64 macOS are available in corresponding folders at:
http://sourceforge.net/projects/sdcc/files/.
Jan 30th, 2020: SDCC 4.0.0 released.
A new release of SDCC, the portable optimizing compiler for 8051, DS390, Z80, Z180, Rabbit 2000, GBZ80, eZ80, TLCS-90,
HC08, STM8, Padauk and PIC microprocessors is now available
(http://sdcc.sourceforge.net).
Sources, documentation and binaries for GNU/Linux amd64, Windows amd64, macOS amd64 and Windows x86 are available.
SDCC 4.0.0 New Feature List:
- The pdk15 backend now passes the regression tests (both with and without —stack-auto), and is thus considered stable.
- New in-development pdk13 backend for Padauk µC with 13-bit wide program memory.
- C2X memccpy(), strdup(), strndup().
- Better tail call optimization.
- Many fixes in the pic14 backend.
- C2X u8 character constants.
- C2X bool, static_assert, alignof, alignas.
- C2X attributes on statements.
- C2X attribute declarations.
- Support for extended ASCII characters in sdas, sdld.
- Compiler support for UCNs and non-ASCII utf8 in identifiers.
Numerous other new features and bug fixes are included as well.
You can download the release from:https://sourceforge.net/projects/sdcc/files/
Jan 24th, 2020: SDCC 4.0.0 RC1 released.
SDCC 4.0.0 Release Candidate 1 source, doc and binary packages for amd64 GNU/Linux, 32 and 64 bit Windows and amd64 macOS are available in corresponding folders at:
http://sourceforge.net/projects/sdcc/files/.
Apr 15th, 2019: SDCC 3.9.0 released.
A new release of SDCC, the portable optimizing compiler for 8051, DS390, Z80, Z180, Rabbit 2000, GBZ80, eZ80, TLCS-90,
HC08, STM8, Padauk and PIC microprocessors is now available
(http://sdcc.sourceforge.net).
Sources, documentation and binaries for GNU/Linux amd64, Windows amd64, macOS amd64 and Windows x86 are available.
SDCC 3.9.0 Feature List:
- Support for struct / union assignment.
- Optimizations in the stm8 backend relevant to soft float increase Whetstone score by two thirds.
- Improvements in rematerialization in the stm8 backend improve code generation for struct, union and arrays.
- New stack allocator reduces stack space usage for the stm8, z80, z180, gbz80, r2k, r3ka, tlcs90 backends.
- New ez80_z80 backend for eZ80 in Z80 mode.
- Removed deprecated sdcclib utility.
- New pdk14 backend for Padauk µC with 14-bit wide program memory.
- New in-development pdk15 backend for Padauk µC with 15-bit wide program memory.
Numerous other new features and bug fixes are included as well.
You can download the release from:https://sourceforge.net/projects/sdcc/files/
Apr 8th, 2019: SDCC 3.9.0 RC1 released.
SDCC 3.9.0 Release Candidate 1 source, doc and binary packages for amd64 GNU/Linux, 32 and 64 bit Windows and amd64 macOS are available in corresponding folders at:
http://sourceforge.net/projects/sdcc/files/.
This site is hosted by | |
Webmaster |
Last updated: |
Редактор свойств
Редактор свойств можно использовать для изменения некоторых строковых свойств и выбора макросов в качестве значений. Чтобы открыть редактор свойств, выберите свойство на странице свойств, а затем нажмите кнопку со стрелкой вниз справа. Если раскрывающийся список содержит команду <Edit> , можно выбрать ее, чтобы открыть редактор свойств для данного свойства.
В редакторе свойств можно нажать кнопку Макросы, чтобы просмотреть доступные макросы и их текущие значения. На следующем рисунке показан редактор свойств для свойства Дополнительные каталоги включаемых файлов после нажатия кнопки Макросы. Если вы добавляете новое значение, когда установлен флажок Наследовать от родителя или от значений по умолчанию для проекта, оно добавляется ко всем значениям, которые в данный момент наследуются. Если снять флажок, новое значение заменяет наследуемые значения. В большинстве случаев следует не снимать этот флажок.
SharpDevelop IDE
SharpDevelop — это IDE с открытым исходным кодом для проектов на платформе Microsoft .NET. В SharpDevelop возможно программирование на языках C #, VB.NET, F #, IronPython и IronRuby, а также целевые и расширенные возможности: Windows Forms или WPF, а также ASP.NET MVC и WCF.
Может запускаться с USB-накопителя, поставляется с интегрированными инструментальными средствами и инструментами для тестирования производительности, Git, NuGet. Имеет множество функций, которые повышают производительность труда разработчика. Это IDE с открытым исходным кодом, можно свободно скачать исходный код и исполняемые файлы c сайта загрузки. SharpDevelop имеет мощный интегрированный отладчик, включая динамические функции отладки, предоставляет возможность модульного тестирования и анализа кода.
- Поддерживаемые языки программирования
- C # (Windows Forms Designer)
- VB.NET (Windows Forms Designer)
- Boo (Windows Forms Designer)
- IronPython (Windows Forms Designer)
- IronRuby (Windows Forms Designer)
- F#
- Каркасы приложений, Frameworks
- Windows Presentation Foundation (WPF)
- Windows Forms
- ASP.NET MVC
- Entity Framework (EF EDM Designer)
- Производительность труда разработчиков
- Функция завершения кода подобная IntelliSense
- Рефакторинг (пакетное переименование, улучшение структуры кода)
- Параллельная поддержка сборки для многоядерных машин
- Поддержка пакетов NuGet и T4
- Автоматическая вставка кода
- Запуск с карты памяти USB
- поддержка чтения проект (Подробнее)
- Полная поддержка MSBuild (платформа сборки проекта)
- Инструменты
- Встроенный отладчик (в том числе динамические особенности отладки)
- Анализ кода
- Модульное тестирование (NUnit)
- Встроенная поддержка Git
Проекты, созданные в Visual Studio, вы можете открывать и редактировать в SharpDevelop и наоборот. Бесплатная среда программирования SharpDevelop предназначена для создания и редактирования любительских и коммерческих проектов. Отлично спроектированная среда разработки SharpDevelop может использоваться как альтернатива Visual Studio .NET Community.
Support for SDCC
SDCC and the included support packages come with fair amounts of documentation
and examples. When they aren’t enough, you can find help in the
places listed below. Here is a short check list of tips to greatly improve your
chances of obtaining a helpful response.
- Attach the code you are compiling with SDCC. It should compile «out of the box».
Snippets must compile and must include any required header files, etc.
Incomplete information will hamper your chance of a timely response. - Specify the exact command you use to run SDCC, or attach your Makefile.
- Specify the SDCC version (type «sdcc -v»), your platform and operating system.
- Provide an exact copy of any error message or incorrect output.
Please attempt to include these 4 important parts,
as applicable, in all requests for support or when reporting any problems or bugs
with SDCC. Though this will make your message lengthy, it will greatly improve your
chance that SDCC users and developers will be able to help you. Some SDCC developers
are frustrated by bug reports without code provided that they can use to reproduce
and ultimately fix the problem, so please be sure to provide sample code if you are
reporting a bug!
- Web Page — you are (X) here.
- Mailing list:
- Send to the developer list <sdcc-devel.AT.lists.sourceforge.net> —
for development work on SDCC - Send to the user list <sdcc-user.AT.lists.sourceforge.net> —
all developers and all users. - Subscribe to the user list
- Send to the developer list <sdcc-devel.AT.lists.sourceforge.net> —
-
Bug Reporting — if you have a problem using SDCC, we need to
hear about it. Please attach code to reproduce the problem,
and be sure to provide your email address so a developer can contact
you if they need more information to investigate and fix the bug. -
Website/Documentation Issues — Please report erroneous, missing or outdated
information -
SDCC Message Forum — an account on Sourceforge is needed if you’re going to
post and reply. Short easy online fill-in the blanks. -
Open Knowledge Web Site —
Run by Thorsten Godau <thorsten.godau.AT.gmx.de>
Visual Studio Code
Описание: кроссплатформенный редактор кода, который при помощи плагинов можно «подтянуть» к статусу IDE.
Плюсы:
- Кроссплатформенность. Работает на MacOS, Ubuntu и Windows. Пока недоступен на Android и iOS.
- Бесплатность. Простой open-source редактор и плагины — платить не надо.
- Легковесность. Потребуется совсем мало ресурсов, чтобы приступить к работе с минималистичным VSC.
Минусы:
- Низкая функциональность. Несмотря на поддержку .NET-платформы, VCS неудобен для сложных проектов.
- Сомнительная надежность. Многие надстройки имеют низкое качество сборки и не всегда выполняют даже основные функции.
Install C in Linux
Linux operating systems mostly comes with GCC preinstalled. To verify if the compiler is installed on the machine, run the following command in the terminal:
gcc --version
After executing this command if the gcc is installed on the machine then it will return the information about the compiler otherwise it will ask you to install the compiler.
To set up the ‘C’ environment on Linux distributions follow the given steps:
1. Open terminal.
2. For red-hat, Fedora users, type and execute this command
# yum groupinstall 'Development Tools'
3. For Debian and Ubuntu users, type and execute following command
$ sudo apt-get update $ sudo apt-get install build-essential manpages-dev
4. To verify that the GCC has been successfully installed on the machine as we discussed earlier, execute the following command
gcc --version
Нам потребуется
1. Естественно нам потребуется сама программа VSCode.
2. В Visual Studio Community должен быть установлен компонент Desktop development with C++:
Чтобы проверить успешную установку, достаточно вызвать Developer Command Prompt for VS 2019 (файл VsDevCmd.bat) из Пуска. Там нужно запустить файл cl.exe. Вывод консоли должен быть без ошибок:
********************************************************************** ** Visual Studio 2019 Developer Command Prompt v16.9.2 ** Copyright (c) 2021 Microsoft Corporation ********************************************************************** C:\Program Files (x86)\Microsoft Visual Studio\2019\Community>cl.exe Microsoft (R) C/C++ Optimizing Compiler Version 19.28.29913 for x86 Copyright (C) Microsoft Corporation. All rights reserved. usage: cl filename... [ /link linkoption... ]
3. Для VSCode должно быть установлено дополнение (расширение) Microsoft C/C++
Компилятор GCC. Первая программа на Windows
Последнее обновление: 18.05.2017
Для создания программ на Си необходим текстовый редактор, с помощью которого можно набрать исходный код. И также необходим компилятор,
который принимает файл с исходным кодом на Си и компилирует его в исполняемый файл.
При запуске установщика откроется следующее окно:
Нажмем на кнопку Next > и перейдем к следующему шагу:
Если версия ОС 64-битная, то в поле следует выбрать пункт x86_64. Остальные настройки
оставим по умолчанию и нажмем на кнопку Next >. На следующем шаге укажем путь, по которому будет устанавливаться пакет:
Можно оставить настройки по умолчанию. И после перехода к следующему шагу собственно начнется установка.
После завершения установки на жестком диске по пути, которое было выбрано для установки, появятся все необходимые файлы компиляторов.
В моем случае они находятся по пути C:\Program Files (x86)\mingw-w64\i686-7.1.0-posix-dwarf-rt_v5-rev0\mingw32\bin:
В зависимости от версии пакета точный путь может отличаться, но в любом случае все файлы будут располагаться по тому пути, который был указан на шаге установки.
В частности, файл gcc.exe как раз и будет представлять компилятор для языка Си.
Далее для упрощения запуска компилятора мы можем добавить путь к нему в Переменные среды. Для этого перейдем к окну
Система -> Дополнительные параметры системы -> Переменные среды:
И добавим путь к компилятору:
Итак, компилятор установлен, и теперь мы можем написать первую программу. Для этого потребуется любой текстовый редактор для набора исходного кода.
Можно взять распространенный редактор Notepad++ или даже обычный встроенный Блокнот.
Итак, создадим на жестком диске папку для исходных файлов. А в этой папке создадим новый файл, который назовем hello.c.
В моем случае файл hello.c находится в папке C:\c.
Теперь определим в файле hello.c простейший код, который будет выводить строку на консоль:
#include <stdio.h> // подключаем заголовочный файл stdio.h int main(void) // определяем функцию main { // начало функции printf("Hello World! \n"); // выводим строку на консоль return 0; // выходим из функции } // конец функции
Для вывода строки на консоль необходимо подключить нужный функционал. Для этого в начале файла идет строка
#include <stdio.h>
Директива include подключает заголовочный файл stdio.h, который содержит определение функции printf, которая нужна для вывода строки на консоль.
Далее идет определение функции int main(void). Функция main должна присутствовать в любой программе на Си, с нее собственно и начинается
выполнение приложения.
Ключевое слово int в определении функции говорит о том, что функция возвращает целое число.
А слово void в скобках указывает, что функция не принимает параметров.
Тело функции main заключено в фигурные скобки {}. В теле функции происходит вывод строки на консоль с помощью функции printf, в которую передается выводимая строка «Hello world!».
В конце осуществляем выход из функции с помощью оператора return. Так как функция должна возвращать целое число, то после return указывается число 0.
Ноль используется в качестве индикатора успешного завершения программы.
После каждого действия в функции ставятся точка с запятой.
Теперь скомпилируем этот файл. Для этого откроем командную строку Windows и вначале с помощью команды cd перейдем к папке с исходным файлом:
cd C:\c
Чтобы скомпилировать исходный код, необходимо компилятору gcc передать в качестве параметра файл hello.c:
gcc hello.c
После этого будет скомпилирован исполняемый файл, который в Windows по умолчанию называется a.exe. И мы можем обратиться к этому файлу, и в этом случае консоль выведет
строку «Hello World!», собственно как и прописано в коде.
НазадВперед
Задание переменных среды для сборки
Компилятор MSVC (cl.exe) распознает определенные переменные среды, в частности LIB, LIBPATH, PATH и INCLUDE. При сборке с помощью интегрированной среды разработки для задания этих переменных среды используются свойства, заданные на странице свойств Каталоги VC++. Если значения LIB, LIBPATH, и ВКЛЮЧАЕТ уже заданы, например с помощью командной строки разработчика, они заменяются значениями соответствующих свойств MSBuild. Сборка затем добавляет значение свойства каталогов исполняемых файлов «Каталоги VC++» в начало переменной PATH. Для задания пользовательской переменной среды можно создать пользовательский макрос и затем установить флажок Задание данного макроса в качестве переменной среды в среде сборки.
Who is SDCC?
- Sandeep Dutta <sandeep.AT.users.sourceforge.net> — original author (SDCC’s version of Torvalds)
- Jean Loius-VERN <jlvern.AT.writeme.com> — substantial improvement in the back-end code generation.
- Daniel Drotos <drdani.AT.mazsola.iit.uni-miskolc.hu> — Freeware simulator for 8051.
- Kevin Vigor <kevin.AT.vigor.nu> — numerous enhancements and bug fixes to the Dallas ds390 tree.
- Johan Knol <johan.knol.AT.users.sourceforge.net> — testing and patching ds390 tree, bug stompper extrodanaire
- Scott Dattalo <scott.AT.dattalo.com> — sdcc for Microchip PIC controller target
- Karl Bongers <karl.AT.turbobit.com> — mcs51 support, winbin builds, and an occasional bug.
- Bernhard Held <bernhard.AT.bernhardheld.de> — snpshot builds and general housekeeping
- Frieder Ferlemann <Frieder.Ferlemann.AT.web.de> — contributions to the documentation and last stages
of code generation - Jesus Calvino-Fraga <jesusc.AT.ece.ubc.ca> — math functions, AOMF51, linker improvements
- Borut Ražem <borut.razem.AT.gmail.com> — WIN32 MSC, cygwin and mingw ports, NSIS installer,
preprocessor and front end improvements, bug fixing, snapshot builds on Distibuted Compile Farm, … - Vangelis Rokas <vrokas.AT.otenet.gr> — PIC16 taget development for Microchip PIC18F microcontrollers
- Erik Petrich <epetrich.AT.users.sourceforge.net> — Bug fixes and improvements for the front end,
8051, z80 and hc08 - Dave Helton <dave.AT.kd0yu.com> — website design
- Paul Stoffregen <paul.AT.pjrc.com> — mcs51 optimizations and website maintenance.
- Michael Hope <michaelh.AT.juju.net.nz> — initial Z80 target, additional coding and bug fixes.
- Maarten Brock <sourceforge.brock.AT.dse.nl> — several bug fixes and improvements, esp. for mcs51 target
- Raphael Neider <RNeider.AT.web.de> — bug fixes and optimizations for PIC16, completion of the PIC14 target
- Philipp Klaus Krause <pkk.AT.spth.de> — work on the STM8,Z80,Z180,Rabbit,GBZ80,TLCS-90 backends, compiler research
- Leland Morrison <enigmalee.AT.sourceforget.net> — Rabbit 2000 support: the target code generator,
sdasrab assembler and ucsim support - Molnár Károly <molnarkaroly.AT.users.sf.net> — adding pic devices, developing and maintaining pic device files
generation scripts - Ben Shi <powerstudio1st.AT.163.com> — the front-end, the STM8 back-end, and the MCS-51 back-end maintain
SDCC has had help from a number of external sources, including:
- Alan Baldwin <baldwin.AT.shop-pdp.kent.edu> — Initial version of ASXXXX and ASLINK.
- John Hartman <noice.AT.noicedebugger.com> — Porting ASXXXX and ASLINK for 8051.
- Dmitry S. Obukhov <dso.AT.usa.net> — malloc and serial I/O routines.
- Pascal Felber — Some of the Z80 related files are borrowed from the Gameboy Development Kit (GBDK).
-
The GCC development team — for GNU C preprocessor,
the basis of sdcpp preprocessor and gcc test suite, partially included into the SDCC regression test suite -
The GNU Binutils development team — for GNU Binutils,
the basis of sdbinutils - Boost Community — for Boost C++ libraries used in sdcc compiler
-
Timo Bingmann — for STX B+ Tree C++ Template Classes
used in sdcc compiler - Malini Dutta <malini.AT.mediaone.net> — Sandeep’s wife, for her patience and support.