Как узнать компилятор exe

Как узнать компилятор exe

Программы для анализа исполняемых файлов

Перед атакой на любую навесную защиту полезно узнать какой упаковщик или протектор был использован. С опытом вы сможете определять на глаз большинство протекторов, но для более точной проверки используются анализаторы исполняемых файлов. Кроме информации об упаковщике или протекторе они также предоставляют много других полезных данных: каким компилятором был создан файл, размеры и названия секций, коэффициент сжатия, точку входа и дизассемблированный фрагмента кода на ней, и др. В разных программах список возможностей может различаться.

PEiD, последняя версия 0.95 от ноября 2008 года. Самый популярный анализатор исполняемых файлов. Анализ производится по внутренней и внешней базе сигнатур, есть несколько уровней сканирования от быстрого до глубокого, можно обрабатывать целые каталоги. Функционал легко расширяется внешними плагинами, сигнатуры хранятся в отдельном текстовом файле, так что вы легко можете добавлять туда свои собственные. Для работы с базой сигнатур написана специальная программа PEiDSO. Разработчикам плагинов в комплекте прилагается SDK с примерами на разных языках программирования и описанием API. Скачать PEiD можно с офсайта, но в этом случае нужный набор плагинов и сигнатур вам придется собирать самим. Поэтому я выкладываю тут свою сборку, которой сам пользуюсь. На глобальность она не претендует, так что и критика тоже не принимается.

PEiD 0.95 с плагинами и сигнатурами (pass: manhunter.ru)

Detect it Easy (DiE), отечественная разработка, последняя версия 0.64 от мая 2007 года. Похожа на PEiD, но основной упор делается на собственные эвристические анализаторы, а уже потом на сигнатурный анализ. Также программа предоставляет некоторые полезные функции: просмотр импорта, секций, просмотр файла в hex-режиме, дизассемблер, просмотр основных характеристик PE, получение хеша MD5 и CRC-32. Функционал расширяется при помощи плагинов. Скачать DiE можно с офсайта.

Detect it Easy 0.65

ExeInfo PE также очень похожа на PEiD, последняя версия 0.0.3.3 от апреля 2013 года. Сигнатуры встроенные (470 штук) и не расширяются. В программе есть интересная функция: если протектор определен, то она дает информацию, при помощи какого инструмента его можно попытаться распаковать. Для новичков эта информация будет очень полезна. Также из полезных инструментов есть риппер архивов из SFX-модулей, поиск текстовых строк, обращений к реестру, корректировка OEP и другие. Скачать можно с офсайта. Также с офсайта можно скачать плагин-переходник для PEiD и DiE, который позволяет выполнять сканирование файлов через ExeInfo PE. Утилита вполне имеет место быть в списке рабочих инструментов.

ExeInfo PE 0.0.5.0

ExeScan 1.05.03.2004

Pe-Scan от snyper, последняя версия 3.31, офсайт прекратил свое существование. При минимальном размере программа обладает большими возможностями. Это эвристический и сигнатурный анализатор исполняемых файлов, распаковщик некоторых пакеров, динамический поиск OEP. Кроме перечисленных инструментов в Pe-Scan есть уникальный вероятностный анализатор для незнакомых упаковщиков и шифровщиков файлов (кнопка «adv.scan»). Он показывает в процентном отношении на какой из известных ему упаковщиков похож исследуемый неизвестный. Помогает определять обычные пакеры типа UPX, обработанные различными скрэмблерами и модификаторами.

PE-Scan 3.31

Stud_PE, последняя версия 2.4.0.1 от апреля 2008 года. Очень неплохая программа, кроме анализа чем упакован файл, показывает еще много другой полезной информации: секции, ресурсы, таблицы импорта и экспорта, DOS-заголовок. Встроеный в Stud_PE HEX-редактор подсвечивает выбранные поля заголовка файла, что бывает очень удобно при анализе его структуры. Также есть менеджер процессов со встроенным дампером. Функционал расширяется при помощи плагинов, причем подходят плагины от PEiD. Описание API и SDK для разработчиков прилагается в комплекте. Скачать Stud_PE можно с офсайта.

File Format Identifier 1.4

Protection ID, последняя версия 0.6.1.6 от января 2009 года. Неплохая программа, используемая в основном для анализа защищенных CD/DVD дисков. Кроме этого определяет около 350 упаковщиков, донглов, инсталляторов исполняемых файлов. Не требует для работы дополнительных файлов, но при этом нет возможности добавлять свои сигнатуры. В последних версиях замечена нехорошая тенденция автора заталкивать в утилиту кучу ненужного барахла, типа индикатора загрузки системы, менеджера процессов, оптимизатора памяти и прочих излишеств. Скачать можно с офсайта.

Protection ID 0.6.7.0

RDG Packer Detector, последняя версия 0.7.3 от 2014 года. Хорошая задумка, но чудовищная реализация, еще один пример разработчикам во что НЕ надо превращать свои программы. Если разберетесь в уродливом интерфейсе, то в придачу к анализатору получите еще несколько инструментов типа OEP Detector, Cryptographic Analyzer, которые у меня так нормально и не заработали. Скачать можно с офсайта, но больше для коллекции, постоянно использовать это убожество нереально.

FastScanner от крякерской команды AT4RE, последняя версия 3.0 beta от октября 2009 года. Сканер работает с сигнатурами от PEiD, поддерживает плагины. Красивый интерфейс, но результат проверки файлов часто бывает ошибочным. Из полезных функций есть неплохой редактор PE-файлов в виде плагина. Скачать можно с офсайта.

Bit Detector 2.8.5.6

MiTeC EXE Explorer 1.4

The Ultimate Hellspawn’s EXE Analyzer 0.6

file insPEctor XL

SCANiT 1.85b

PEPirate 0.51

gAPE 1.01

PeStudio 3.45

InspectExe добавляет в окно свойств исполняемых файлов дополнительные вкладки для просмотра секций, таблицы импорта, ресурсов, манифеста и других данных. Скачать можно с офсайта.

DNiD 1.0

A-Ray Scanner, проект давно не обновлялся, последняя версия 2.0.2.2 от 2005 года. Программа предназначена только для сканирования CD/DVD-дисков и определяет несколько десятков защит дисков от копирования. Также определяет некоторые упаковщики и протекторы исполняемых файлов.

A-Ray Scanner 2.0.2.2

ClonyXXL 2.0.1.5

Кроме универсальных анализаторов есть несколько утилит для определенных протекторов. Наиболее полезные из них ASPrINF, VerA, Armadillo Find Protected, Armadillo Informant и Detemida.

ASPrINF от nik0g0r из команды TLG, еще одна отечественная разработка, последняя версия 1.6 beta. Небольшая утилита для точного определения версии протектора ASProtect, которым накрыт файл. Используется динамический анализ, а не сигнатурный, поэтому версия определяется безошибочно. Кроме точной версии ASProtect утилита показывает информацию на кого зарегистрирован протектор, так что шароварщики, использующие для своих поделок ломаные варезные протекторы, могут быть легко выведены на чистую воду 🙂

ASPrINF 1.6 beta

VerA 2.0.3

Armadillo Find Protected от vel, последняя публичная версия 1.9. Эта утилита позволяет определить наличие в файле защиты Armadillo, узнать все опции, с которыми был установлен протектор, а также узнать версию самого протектора. Поддерживаются версии Armadillo до 6.40. Кроме анализа утилита позволяет подменять HWID для защищенных программ (версия 1.8), очищать триальные счетчики (версия 1.9) и делать detach дочернего процесса.

Читайте также:  Баннер что это геншин

Armadillo Find Protected 1.8

Armadillo Find Protected 1.9

Armadillo Find Protected 2.0

Armadillo Find Protected 2.1

Armadillo Informant 0.9.6 beta

Detemida 1.0.0.5

RDG Themida-Winlicense Version Finder с традиционным для RDG чудо-интерфейсом также предназначена для определения версии Themida и WinLicense, однако делает это среди уже запущенных процессов. Может куда и сгодится.

RDG Themida-Winlicense Version Finder 1.0

EnigmaInfo 0.11

Если у вас есть еще интересные программы для анализа исполняемых файлов, то сообщите в комментариях. Самые полезные будут обязательно добавлены.

Источник

Как определить версию компилятора C # в командной строке

Есть ли какая-нибудь команда для получения версии компилятора C #? Командные швы csc не имеют опции для отображения версии компилятора.

Однако я почти уверен, что мой компилятор C # новее 1.3!

2 ответа

Другой был выделен как часть проекта Roslyn и хранится в каталоге MSBuild. При сбросе номера версии нумерация снова начинается с 1. Вы запустите его, когда воспользуетесь командной строкой разработчика. Наиболее вероятной причиной сброса номера версии является их желание не попадать в рамки выпуска релизов, Roslyn страдала от очень большого количества ошибок, требующих исправления промежуточных выпусков. Заметной проблемой, вызванной разделением, было добавление нового типа ValueTuple в C # v7, необходимого для значительно улучшенной поддержки кортежей. Компилятор был поставлен до того, как фреймворк стал доступен, и программистам пришлось на время вернуться к использованию пакета Nuget.

В качестве дословного ответа на вопрос new-ish [ update: версии roslyn выше 2, см. Комментарий Кэмерона МакФарланда ] версии csc действительно имеют переключатель / version:

Для сценариев (скажем, если вы хотите включить версию) этого может быть достаточно, вместе с тестированием %errorlevel% из csc /version для помещения в слишком старую корзину.

Однако /version НЕ отображается в https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/compiler-options/listed-alphabetically (которая кажется последней версией), и я не могу найти ничего в списке в какой версии он был добавлен.

ОБНОВЛЕНИЕ: я также был бы очень осторожен с номером версии, сообщенным csc, например, мой личный «по умолчанию» находится в C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\Roslyn и имеет версию 2.3.2.62116 (и дату файла 22 / 9/2017), но у меня также есть C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe с версией 4.7.2046.0 (и датой файла 18.03.2017) (без переключателя / version).

Есть ли какая-нибудь команда для получения версии компилятора C #?

Источник

Как извлечь код программы из ехе файла?

Можно ли как-нибудь из ехе-файла получить дизассемблированый код
Можно ли как нибудь из ехе файла получить дизассемблированый код на FASM\MASM?

Как узнать исходный код файла-ЕХЕ для Visual Basic 6.0?
Здравствуйте! Прошу помощи. Как узнать P-Code? Научите, пожалуйста, пользоваться компиляторами и.

Как средствами Delphi реализовать извлечение ехе файла при запуске ехе?
Здорова, народ. Как средствами Delphi реализовать извлечение ехе файла при запуске ехе? Заранее.


смешно, хоть и флуд.

можете поискать, но скорее всего, ничего, удовлетворяющего вашим требованиям вы не найдете.

можете поискать, но скорее всего, ничего, удовлетворяющего вашим требованиям вы не найдете.

и хватит хамить.
я хоть в этом разделе уже и не модератор, но репу загадить могу по самый бан.

и хватит хамить.
я хоть в этом разделе уже и не модератор, но репу загадить могу по самый бан.

ну вот сейчас вменяемое объяснение. это так сложно сразу нормально писать.
То что можно только повторить примерный листинг пользуясь диззасемблером/декомпилятором это и говорилось автору сразу, но он сам этого мало понимает в силу своих очень скудных познаний (да и интелектуальный потенциал этого индивида тоже вызывает сомнения)
>>1)автор хочет исходник для Студии; от бишь с шаблонами диалогов, ДОТНЕТОМ, и прочими финтифлюшками. это специфические реализации С++

с++ это не дотнет, дотнетовские проги просматриваются CLR просмоторщиками (который входит в состав студии)

Источник

Процесс компиляции программ на C++

Цель данной статьи:

В данной статье я хочу рассказать о том, как происходит компиляция программ, написанных на языке C++, и описать каждый этап компиляции. Я не преследую цель рассказать обо всем подробно в деталях, а только дать общее видение. Также данная статья — это необходимое введение перед следующей статьей про статические и динамические библиотеки, так как процесс компиляции крайне важен для понимания перед дальнейшим повествованием о библиотеках.

Все действия будут производиться на Ubuntu версии 16.04.
Используя компилятор g++ версии:

Состав компилятора g++

Мы не будем вызывать данные компоненты напрямую, так как для того, чтобы работать с C++ кодом, требуются дополнительные библиотеки, позволив все необходимые подгрузки делать основному компоненту компилятора — g++.

Зачем нужно компилировать исходные файлы?

Исходный C++ файл — это всего лишь код, но его невозможно запустить как программу или использовать как библиотеку. Поэтому каждый исходный файл требуется скомпилировать в исполняемый файл, динамическую или статическую библиотеки (данные библиотеки будут рассмотрены в следующей статье).

Этапы компиляции:

driver.cpp:

1) Препроцессинг

Самая первая стадия компиляции программы.

Препроцессор — это макро процессор, который преобразовывает вашу программу для дальнейшего компилирования. На данной стадии происходит происходит работа с препроцессорными директивами. Например, препроцессор добавляет хэдеры в код (#include), убирает комментирования, заменяет макросы (#define) их значениями, выбирает нужные куски кода в соответствии с условиями #if, #ifdef и #ifndef.

Хэдеры, включенные в программу с помощью директивы #include, рекурсивно проходят стадию препроцессинга и включаются в выпускаемый файл. Однако, каждый хэдер может быть открыт во время препроцессинга несколько раз, поэтому, обычно, используются специальные препроцессорные директивы, предохраняющие от циклической зависимости.

Получим препроцессированный код в выходной файл driver.ii (прошедшие через стадию препроцессинга C++ файлы имеют расширение .ii), используя флаг -E, который сообщает компилятору, что компилировать (об этом далее) файл не нужно, а только провести его препроцессинг:

Взглянув на тело функции main в новом сгенерированном файле, можно заметить, что макрос RETURN был заменен:

В новом сгенерированном файле также можно увидеть огромное количество новых строк, это различные библиотеки и хэдер iostream.

2) Компиляция

На данном шаге g++ выполняет свою главную задачу — компилирует, то есть преобразует полученный на прошлом шаге код без директив в ассемблерный код. Это промежуточный шаг между высокоуровневым языком и машинным (бинарным) кодом.

Читайте также:  Как упорядочить множество python

Ассемблерный код — это доступное для понимания человеком представление машинного кода.

Используя флаг -S, который сообщает компилятору остановиться после стадии компиляции, получим ассемблерный код в выходном файле driver.s:

Мы можем все также посмотреть и прочесть полученный результат. Но для того, чтобы машина поняла наш код, требуется преобразовать его в машинный код, который мы и получим на следующем шаге.

3) Ассемблирование

Так как x86 процессоры исполняют команды на бинарном коде, необходимо перевести ассемблерный код в машинный с помощью ассемблера.

Ассемблер преобразовывает ассемблерный код в машинный код, сохраняя его в объектном файле.

Объектный файл — это созданный ассемблером промежуточный файл, хранящий кусок машинного кода. Этот кусок машинного кода, который еще не был связан вместе с другими кусками машинного кода в конечную выполняемую программу, называется объектным кодом.

Далее возможно сохранение данного объектного кода в статические библиотеки для того, чтобы не компилировать данный код снова.

Получим машинный код с помощью ассемблера (as) в выходной объектный файл driver.o:

Но на данном шаге еще ничего не закончено, ведь объектных файлов может быть много и нужно их всех соединить в единый исполняемый файл с помощью компоновщика (линкера). Поэтому мы переходим к следующей стадии.

4) Компоновка

Компоновщик (линкер) связывает все объектные файлы и статические библиотеки в единый исполняемый файл, который мы и сможем запустить в дальнейшем. Для того, чтобы понять как происходит связка, следует рассказать о таблице символов.

Таблица символов — это структура данных, создаваемая самим компилятором и хранящаяся в самих объектных файлах. Таблица символов хранит имена переменных, функций, классов, объектов и т.д., где каждому идентификатору (символу) соотносится его тип, область видимости. Также таблица символов хранит адреса ссылок на данные и процедуры в других объектных файлах.
Именно с помощью таблицы символов и хранящихся в них ссылок линкер будет способен в дальнейшем построить связи между данными среди множества других объектных файлов и создать единый исполняемый файл из них.

Получим исполняемый файл driver:

5) Загрузка

Последний этап, который предстоит пройти нашей программе — вызвать загрузчик для загрузки нашей программы в память. На данной стадии также возможна подгрузка динамических библиотек.

Запустим нашу программу:

Заключение

В данной статье были рассмотрены основы процесса компиляции, понимание которых будет довольно полезно каждому начинающему программисту. В скором времени будет опубликована вторая статья про статические и динамические библиотеки.

Источник

Пошаговое руководство. Компиляция программы на языке C из командной строки

В состав Visual C++ включен компилятор языка C, позволяющий создавать как простые консольные программы, так и классические приложения Windows, мобильные приложения и многое другое.

В этом пошаговом руководстве показано, как создать простейшую программу на языке C в стиле «Hello, World» в текстовом редакторе с последующей компиляцией из командной строки. Если вы предпочитаете работать с C++ в командной строке, см. статью Пошаговое руководство. Компиляция собственной программы на языке C++ из командной строки. Если вы хотите попробовать интегрированную среду разработки Visual Studio вместо командной строки, см. статью Пошаговое руководство. Работа с проектами и решениями (C++) или Использование интегрированной среды разработки Visual Studio для разработки приложений для настольных систем на языке C++.

Предварительные требования

Для выполнения этого пошагового руководства необходимо установить Visual Studio и дополнительные компоненты Visual C++ или Build Tools для Visual Studio.

Visual Studio — это эффективная интегрированная среда разработки, которая поддерживает полнофункциональный редактор, диспетчеры ресурсов, отладчики и компиляторы для многих языков и платформ. Сведения об этих компонентах, а также о скачивании и установке Visual Studio, включая бесплатный выпуск Visual Studio Community, см. в этой статье.

При использовании версии Build Tools для Visual Studio устанавливаются только программы командной строки, библиотеки и компиляторы, необходимые для сборки программ на C и C++. Это идеальный вариант для создания заданий и упражнений, а установка выполняется относительно быстро. Чтобы установить только набор программ командной строки, скачайте Build Tools для Visual Studio на странице скачивания Visual Studio, а затем запустите установщик. В установщике Visual Studio выберите рабочую нагрузку Средства сборки C++ и щелкните Установить.

Прежде чем можно будет выполнить сборку программы C или C++ в командной строке, необходимо убедиться в том, что эти средства установлены и к ним можно получить доступ из командной строки. Visual C++ имеет сложные требования к среде командной строки для поиска используемых средств, заголовков и библиотек. Visual C++ нельзя использовать в простом окне командной строки без предварительной подготовки. Вам понадобится окно командной строки разработчика, являющееся обычным окном командной строки, в котором заданы все необходимые переменные среды. К счастью, Visual C++ устанавливает ярлыки для запуска командной строки разработчика, для которой настроена среда для сборок из командной строки. К сожалению, имена ярлыков командной строки разработчика и места их расположения отличаются практически во всех версиях Visual C++ и в различных версиях Windows. Первая задача пошагового руководства — найти нужный ярлык.

Ярлык командной строки разработчика автоматически задает правильные пути для компилятора и средств, а также для всех необходимых заголовков и библиотек. Некоторые из этих значений различаются для каждой конфигурации сборки. Если вы не используете ни один из ярлыков, эти значения среды необходимо задать самостоятельно. Дополнительные сведения см. в статье Использование набора инструментов MSVC из командной строки. Так как настраивать среду разработки сложно, настоятельно рекомендуется использовать ярлык командной строки разработчика вместо создания собственного.

Инструкции отличаются в зависимости от используемой версии Visual Studio. Чтобы ознакомиться с документацией по предпочтительной версии Visual Studio, используйте селектор Версия. Он находится в верхней части оглавления на этой странице.

Открытие командной строки разработчика в Visual Studio 2022

Если вы установили Visual Studio 2022 в Windows 10 или более поздней версии, откройте меню «Пуск» и выберите Все приложения. Прокрутите вниз и откройте папку Visual Studio 2022 (не приложение Visual Studio 2022). Выберите элемент Командная строка разработчика для VS 2022, чтобы открыть окно командной строки.

Читайте также:  Как установить world painter

Открытие командной строки разработчика в Visual Studio 2019

Если вы установили Visual Studio 2019 в Windows 10 или более поздней версии, откройте меню «Пуск» и выберите Все приложения. Прокрутите вниз и откройте папку Visual Studio 2019 (не приложение Visual Studio 2019). Выберите элемент Командная строка разработчика для VS 2019, чтобы открыть окно командной строки.

Открытие командной строки разработчика в Visual Studio 2017

Если вы установили Visual Studio 2017 в Windows 10 или более поздней версии, откройте меню «Пуск» и выберите Все приложения. Прокрутите вниз и откройте папку Visual Studio 2017 (не приложение Visual Studio 2017). Выберите элемент Командная строка разработчика для VS 2017, чтобы открыть окно командной строки.

Открытие командной строки разработчика в Visual Studio 2015

Если вы установили Microsoft Visual C++ Build Tools 2015 в Windows 10 или более поздней версии, откройте меню «Пуск» и выберите Все приложения. Прокрутите вниз и откройте папку Microsoft Visual C++ Build Tools. Выберите элемент Командная строка Native Tools x86 Visual C++ 2015, чтобы открыть окно командной строки.

Если вы используете другую версию Windows, найдите в меню «Пуск» или на начальной странице папку средств Visual Studio, содержащую ярлык командной строки разработчика. Можно также ввести «командная строка разработчика» в строке поиска в Windows и выбрать командную строку, которая соответствует установленной версии Visual Studio. Откройте окно командной строки с помощью ярлыка.

Затем убедитесь в том, что командная строка разработчика Visual C++ настроена правильно. В окне командной строки введите cl и убедитесь в том, что выходные данные выглядят примерно так:

В зависимости от установленной версии Visual C++ и обновлений текущий каталог или номера версий могут отличаться. Если приведенный выше результат похож на отображаемый, можно приступать к сборке программ C или C++ в командной строке.

Если при выполнении команды cl появляется сообщение о том, что «cl не распознается как внутренняя или внешняя команда, исполняемая программа или пакетный файл», или возникают ошибки C1034 или LNK1104, дело в том, что вы не используете командную строку разработчика или что-то не так с установкой Visual C++. Для продолжения нужно будет исправить ошибку.

Если вы не можете найти ярлык командной строки разработчика или при вводе cl появляется сообщение об ошибке, возможно, возникла проблема с установкой Visual C++. При использовании Visual Studio 2017 или более поздней версии попробуйте переустановить рабочую нагрузку Разработка классических приложений на C++ с помощью установщика Visual Studio. Подробные сведения см. в статье Справка по установке средства С++ в Visual Studio. Можно также переустановить Build Tools со страницы Загрузки Visual Studio. Не переходите к следующему разделу, пока команда cl не сработает. Дополнительные сведения об установке Visual Studio и устранении неполадок см. в статье Установка Visual Studio.

В зависимости от версии Windows, установленной на компьютере, и конфигурации системы безопасности может потребоваться правой кнопкой мыши открыть контекстное меню для ярлыка командной строки разработчика и выбрать пункт Запуск от имени администратора, чтобы успешно выполнить сборку и запуск программы, созданной в этом пошаговом руководстве.

Создание файла исходного кода на языке C и его компиляция из командной строки

В окне блокнота введите следующие строки кода:

Имя исполняемой программы (hello.exe) отображается в информации, выводимой компилятором.

Если вы получаете сообщение об ошибке, например «cl не распознается как внутренняя или внешняя команда, исполняемая программа или пакетный файл», ошибке C1034 или LNK1104, командная строка разработчика настроена неправильно. Чтобы получить сведения о том, как устранить эту проблему, вернитесь к разделу Открыть командную строку разработчика.

Если вы получаете другое сообщение об ошибке или предупреждение компилятора или компоновщика, проверьте исходный код, исправьте ошибки, сохраните его и снова запустите компилятор. Для получения сведений о конкретных ошибках введите номер ошибки в поле поиска вверху этой страницы.

Программа выводит следующий текст и затем закрывается:

Поздравляем! Вы скомпилировали и запустили программу на C с помощью командной строки.

Следующие шаги

Этот пример Hello, World является самой простой программой C. Реальные программы выполняют полезные действия и имеют файлы заголовков, дополнительные исходные файлы и ссылки на библиотеки.

Вы можете использовать шаги, описанные в этом пошаговом руководстве для C, для создания собственного кода, чтобы не вводить приведенный пример. Вы также можете выполнить сборку различных примеров кода на C, которые можно найти в других местах. Чтобы скомпилировать программу с дополнительными файлами исходного кода, введите их все в командной строке, например:

cl file1.c file2.c file3.c

Компилятор выдает программу с именем file1.exe. Чтобы изменить имя на program1.exe, добавьте параметр компоновщика /out:

cl file1.c file2.c file3.c /link /out:program1.exe

Чтобы автоматически перехватывать другие ошибки программирования, рекомендуется выполнить компиляцию с помощью порога предупреждений /W3 или /W4:

cl /W4 file1.c file2.c file3.c /link /out:program1.exe

Компилятор cl.exe имеет множество других параметров, которые можно применять для создания, оптимизации, отладки и анализа кода. Чтобы просмотреть краткий список, введите cl /? в командной строке разработчика. Можно также выполнять компиляцию и компоновку отдельно и применять параметры компоновщика в более сложных сценариях сборки. Дополнительные сведения о параметрах компилятора и компоновщика и использовании см. в разделе Справочник по построению C/C++.

Для настройки и создания более сложных проектов в командной строке можно использовать NMAKE и файлы makefile либо MSBuild и файлы проекта. Дополнительные сведения об использовании этих средств см. в разделах Справочник по NMAKE и MSBuild.

Языки C и C++ похожи, но имеют различия. Компилятор Microsoft C/C++ (MSVC) использует простое правило для определения языка, используемого при компиляции кода. По умолчанию компилятор MSVC рассматривает все файлы с расширением .c как исходные коды на языке С, а файлы с расширением .cpp как исходные коды на языке С++. Если указан параметр компилятора /TC, компилятор будет рассматривать все файлы как исходные коды на языке С вне зависимости от расширения.

Некоторые функции библиотеки и имена функций POSIX являются нерекомендуемыми в компиляторе MSVC. Функции поддерживаются, но предпочтительные имена изменились. Дополнительные сведения см. в статьях Функции безопасности в CRT и Предупреждение компилятора (уровень 3) C4996.

Источник

Обучающий проект