Поиск компилятора для C++

Тема в разделе "LANGS.C", создана пользователем Xerx, 14 авг 2007.

  1. Xerx

    Xerx Алексей

    Публикаций:
    0
    Регистрация:
    17 фев 2005
    Сообщения:
    528
    Адрес:
    Russia
    Собственно, подскажите компилятор для C++, который создает Win32EXE, не использующий сторонних библиотек (например msrtl.dll, библиотек BCB и т.п.).
     
  2. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    тот же microsoft cl можно заставить не линковать прогу ни с чем.
     
  3. rain

    rain New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2006
    Сообщения:
    976
    #pragma comment(linker, "/nodefaultlib")
     
  4. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    просто отключи Include Default Libs в настройках линкера.
     
  5. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    rain
    прагмами лучше не баловаться, ибо бывают глюки, с этим связанные) Я обычно все в настройках проекта отключаю/включаю/меняю, что мне нужно
     
  6. Xerx

    Xerx Алексей

    Публикаций:
    0
    Регистрация:
    17 фев 2005
    Сообщения:
    528
    Адрес:
    Russia
    Насколько помню, в том же BCB отключение этой опций заставляет компилятор включить в саму программу нужный код из всяких там *.bpl или как-то так, но основная DLL-библиотека все равно используется. В MV что-то подобное. Я сейчас с телефона и не могу проверить, но вроде все так и есть. Завтра на работе посмотрю.

    Я не прав?
     
  7. lamer2k

    lamer2k New Member

    Публикаций:
    0
    Регистрация:
    14 май 2006
    Сообщения:
    88
    Если ты хочешь отказаться от всех фич типа memcpy, strlen, некоторых особенностей ООП и прочего, тогда комипллер MS VS 6 - самый лучший варинат. Хотя как редактор кода - полный кал имхо.

    опция #pragma comment(linker,"/nodefaultlib") уберет все левые либы.

    #pragma comment(linker,"/entry:MainPROC") - уберет все шаманские пляски связанные подготовкой приложения к старту, а если борешься за каждый байт получившегося бинарника, то опция
    #pragma comment(linker,"/filealign:0x200") застваит выравнивать по минимальному размеру, который воспринимет загрузчик.
     
  8. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    можно получить доступ к mem* функциям прилинковав ntdll.lib.
    srt* почти все заменяются аналогами из WinAPI. strlen -> lstrlenA, например.
     
  9. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    В общем, поиск по форуму. Тема поднимается в сотый раз.
     
  10. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    http://wasm.ru/forum/viewtopic.php?pid=188444#p188444 я тут писал про то, откуда возникает большой размер хеллоу-ворлд прог
     
  11. CnCVK

    CnCVK New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2006
    Сообщения:
    108
    Вот как раз от memcpy, strlen отказываться не надо - они встраиваемые :)
    Компилеру (cl.exe) пофигу если или нет описания этих функций.
    более того некоторые версии заменяют
    Код (Text):
    1. int l = size;
    2. char* p = data;
    3. while (l--)
    4. {
    5.    *p++ = 0x20;
    6. }
    код на вызов memset!
     
  12. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    Как компилятор может быть редактором кода? Вы про что говорите? Про devenv.exe или про cl.exe?
     
  13. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Я б сказал - самый худший вариант. Хотя прежних версий не видел, они наверное поущербнее.
     
  14. Xerx

    Xerx Алексей

    Публикаций:
    0
    Регистрация:
    17 фев 2005
    Сообщения:
    528
    Адрес:
    Russia
    Посмотрел что мне ту предложили, и сделал на MSVS2005 такой код
    Код (Text):
    1. #include <windows.h>
    2.  
    3. void start() {
    4.     MessageBox(0, "Hello!", NULL, 0);
    5.  
    6.     ExitProcess(0);
    7. }
    в EXE'шник размером в 2Кб. Причем используются только User32.MessageBoxA и Kernel32.ExitProcess. Причем никаких выравнивания я не использовал. Собственно, что и хотелось.

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

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

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    Xerx
    LCC?
     
  16. Xerx

    Xerx Алексей

    Публикаций:
    0
    Регистрация:
    17 фев 2005
    Сообщения:
    528
    Адрес:
    Russia
    censored
    Посмотрел LCC. Код
    Код (Text):
    1. #include <windows.h>
    2.  
    3. int APIENTRY WinMain(HINSTANCE hinst, HINSTANCE hinstPrev, LPSTR lpCmdLine, int nCmdShow) {
    4.  
    5.     MessageBox(0, NULL, NULL, 0);
    6.  
    7.     return 0;
    8. }
    он скомпилировал в 11.5Кб с использованием CRTDLL.DLL. И я нигде не нашел описания ключей для настройки компиляции. Где о них прочитать?

    Да и отсутствие IDE это большой минус.
     
  17. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    То IDE не нравится, то без него плохо. Возьми любой продвинутый редактор кода, будет тебе IDE.
     
  18. Xerx

    Xerx Алексей

    Публикаций:
    0
    Регистрация:
    17 фев 2005
    Сообщения:
    528
    Адрес:
    Russia
    IceStudent
    Ищу КОМПИЛЯТОР. Требования выше. Но такой, чтобы его можно было использовать в интегрированной IDE (редактор, поддержка этого компилятора и отладчик). А IDE мне не нравится ТОЛЬКО MSVS. Почему, я уже писал.
     
  19. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    Xerx
    Под рукой данного компилятора сейчас нет.
    Обычно либо смотрю хелпы, к-рые с ним идут (там все ключи должны быть указаны), либо lcc /?. Точно помню, что можно сделать меньше размер.
    Вы может не то смотрели? IDE там есть, наверное, не самая лучшая (по причине неиспользования IDE вообще ничего не могу сказать), но в ней точно можно выставлять настройки проекта.
     
  20. Xerx

    Xerx Алексей

    Публикаций:
    0
    Регистрация:
    17 фев 2005
    Сообщения:
    528
    Адрес:
    Russia
    censored
    Хелпов нет. man'ов нет. Есть только dllwiz.hlp, indent.hlp и mc.hlp.
    Следующие параметры lcc НЕ понимает: ? /? -? -h /h -help --help
    IDE есть (wedit), но в нем настроек почти нет. Справки тоже нет.

    P.S. Скачал LCC с http://www.cs.virginia.edu/~lcc-win32/