Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поиск кросплатформенного компилятора C++ 
:(
    Опции темы
Xerx
Дата 14.8.2007, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 28.5.2005
Где: Калуга

Репутация: нет
Всего: нет



Кто знает компилятор, генерирующий Win32EXE, не требующий для работы сторонних библиотек (как например msvcrt.dll)?
Я пока нашел лишь Digital Mars. Он компилирует
Код

#include <windows.h>

int WINAPI WinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int nFunsterStil) {

    MessageBox(0, "Hello!", NULL, MB_OK);

    return 0;
}

в exe'шник, требующий лишь user32.dll и kernel32.dll. Т.е. то, что мне и нужно. Но, размер файла более 30Кб. Не смертельно, но меньше у меня не получилось сделать.

Есть ли компиляторы лучше?

P.S. Критично, чтобы НЕ использовались сторонние библиотеки. Итоговый размер уже менее важен.

Это сообщение отредактировал(а) Xerx - 14.8.2007, 17:37
PM MAIL ICQ   Вверх
Fazil6
Дата 14.8.2007, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 35
Всего: 60



Цитата(Xerx @  14.8.2007,  17:32 Найти цитируемый пост)
Поиск кросплатформенного компилятора C++


такая "кроссплатформенность" достигается настройками компиллятора и вобщем-то любой компиллятор может так (без msvcrt.dll )
PM MAIL   Вверх
jonie
Дата 14.8.2007, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 15
Всего: 118



читать там http://forum.vingrad.ru/forum/topic-167210.html
+поиск.


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
Xerx
Дата 15.8.2007, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 28.5.2005
Где: Калуга

Репутация: нет
Всего: нет



Если бы все было так легко. Я пытаюсь это сделать на следующих вариантах:
MSVS 2005 с таким кодом:
Код

#include "stdafx.h"

int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) {

    MessageBox(0, NULL, NULL, MB_OK);

    return 0;
}

Включил опцию /nodefaultlib, теперь компилятор ругается
Error    1    error LNK2001: unresolved external symbol @__security_check_cookie@4    TestProject.obj    
Если опцию не включать, но выключить генерацию отладочного кода, в итоговом файле используется только User32.dl. Но размер 60Кб! Меньше никак нельзя?

В MinGW аналогично, только #include <windows.h>. 
Как я ни бился - используется msvcrt.dll. Зато размер - 5Кб, что очень даже хорошо.

Аналогично в Code::Blocks (тот же компилятор)

BCB, к сожалению, под рукой нет.

Digital Mars генерирует файл без доп. библиотек, но создается консольное приложение на 30Кб. Избавиться от этого я не смог.

Emacs это вообще тихий ужас ;-)

Кто может привести точное описание (желательно по шагам) для конкретной среди и конкретного компилятора отключения использования доп. библиотек, чтобы после этого можно было корректно скомпилировать приведенный выше код? Буду благодарен.
PM MAIL ICQ   Вверх
SABROG
Дата 15.8.2007, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 4
Всего: 91



Откажись от RTL(CRT). В случае с mingw32 остается mingwm10.dll, можно попробывать эти флаги:

-static -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc

http://www.rsdn.ru/article/cpp/crt.xml

Попробуй этот код скомпилить через mingw32:

Код

#include <iostream>

int main()
{
    std::cout << "Hello, world!" << std::endl;
    return 0;
}


Я так понял придется еще отказаться от нитей и эксепшенов.

Это сообщение отредактировал(а) SABROG - 15.8.2007, 14:11


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
Xerx
Дата 15.8.2007, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 28.5.2005
Где: Калуга

Репутация: нет
Всего: нет



Мне НЕ нужна поддержка CRT/RTL, RTTI, MFC, ООП и так далее. Ну и никаких встроенных memcpy, strlen и new/delete мне НЕ нужно.
Только минимальный размер итоговой программы, использующей только Win32API вызовы. Но надо compiler+IDE+debugger.

Смог скомпилировать этот код:
Код

#include <windows.h>

void start() {
    MessageBox(0, "Hello!", NULL, 0);

    ExitProcess(0);
}

с помощью MSVS2005. Получил EXE'шник размером в 2Кб. Причем используются только User32.MessageBoxA и Kernel32.ExitProcess. Причем никаких выравнивания я не использовал. Собственно, что и хотелось.

А как насчет других сред? Слишком мне эта MSVS непривычная (я ее впервые в жизни запустил): перегруженная, тормознутая и т.д и т.п.... ;-)

В примере
Код

#include <iostream>
int main()
{
    std::cout << "Hello, world!" << std::endl;
    return 0;
}

Мне не нравится использование iosteam - это мне излишне. Ну и соответственно нужно выкинуть cout. Нужно ТОЛЬКО Win32API.

Это сообщение отредактировал(а) Xerx - 15.8.2007, 14:32
PM MAIL ICQ   Вверх
SABROG
Дата 15.8.2007, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 4
Всего: 91



Может легче тогда будет на ассемблер сесть ? Fasm хорошая алтернатива, полностью управляемый код, ничего лишнего вообще, кроссплатформенный. Насчет MSVCRT статейка есть, смысл сходится к тому, чтобы заменить msvcrt на другую библиотеку - http://msdn.microsoft.com/msdnmag/issues/0...od/default.aspx


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
Xerx
Дата 15.8.2007, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 28.5.2005
Где: Калуга

Репутация: нет
Всего: нет



SABROG
Я предпочитаю MASM. Уже много лет под ним сижу. Но мне сейчас нужен компилятор ИМЕННО C++.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0747 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.