IPB

Добро пожаловать, гость ( Вход | Регистрация )

> Нужен нормальный C/C++ компилятор
-=CHE@TER=-
Aug 6 2008, 11:07
Сообщение #1


Walter Sullivan
***

Группа: Root Admin
Сообщений: 1,355
Регистрация: 4-February 08
Пользователь №: 3
Спасибо сказали: 311 раз(а)



В общем, в последнее время часто приходится работать с программами на Си / C++.
В связи с этим хотелось бы нормальный компилятор. Сейчас пользуюсь DEV-CPP 4.9.8.0 и MSVC++ 6.0.
Чем меня не устраивают оба этих компилятора - на примере adx2wave с моего сайта.
DEV-CPP всем хорош, но использует msvcrt.dll, что меня несколько напрягает, размер .EXE - 14,336 байт.
MSVC++ 6.0 - при включении опции оптимизации по размеру тоже начинает, гад, использовать msvcrt.dll, если её не включить - всё хорошо, использует только .DLL от ядра системы, но, увы, размером похвастаться не может - 40,960 байт.

Поэтому хотелось бы спросить - существует ли нормальный компилятор (даже, скорее, линкер - т.к. скомпилировать, чтобы ошибок не было, могу и под другим компилятором), который:
а) Не гадит в получаемый исходный файл лишней информацией (как MSVC).
б) Не использует левые библиотеки, кроме .DLL ядра системы (как DEV-CPP).
в) Генерирует небольшие по размеру исполняемые файлы.
г) Ещё, было бы здорово, если бы он был Freeware'ный.
Кто-нибудь знает - такое в природе существует?

P.S. Блин, написал бы уже давно собственный компилятор для Delphi и C++, чем тем что есть пользоваться, но, увы, у меня нет такого дикого количества времени и сил...
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
 
Reply to this topicStart new topic
Ответов
-=CHE@TER=-
Jan 30 2013, 17:22
Сообщение #2


Walter Sullivan
***

Группа: Root Admin
Сообщений: 1,355
Регистрация: 4-February 08
Пользователь №: 3
Спасибо сказали: 311 раз(а)



Look at this!!! It's awesome!!!

"compile.bat"
CODE
@echo off
C:\Dev-Cpp\bin\gcc.exe -c -Wall -pedantic -mwindows "test.c"
C:\Dev-Cpp\bin\ld test.o --subsystem windows -o test.exe C:\Dev-Cpp\lib\CRT_noglob.o -L C:\Dev-Cpp\lib -l kernel32 -l user32 -nostdlib --exclude-libs msvcrt.a -e_WinMain@16
C:\Dev-Cpp\bin\strip.exe "test.exe" >nul 2>&1

(если нужно консольное приложение - убираем флаг "--subsystem windows")

"test.c"
CODE
#include <windows.h>

static TCHAR s[] = TEXT("Hello world!\n");
static DWORD dw;

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
/*  WriteFile(GetStdHandle(STD_OUTPUT_HANDLE), s, lstrlen(s), &dw, NULL);
  ReadFile(GetStdHandle(STD_INPUT_HANDLE), s, 1, &dw, NULL);*/
  MessageBox(0, s, NULL, 0);
  ExitProcess(0);
}

Всего 2 Кб и никаких "msvcrt.dll"!!!
Параметры WinMain(), конечно, придётся инициализировать вручную... но остальное работает!!!
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

Сообщения в этой теме


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0 -

 



Упрощённая версия Сейчас: 27th May 2024 - 09:02