Войти

Показать полную графическую версию : [решено] MS Visual C++ 6.0 Professional Edition


dronsky
09-08-2013, 03:03
Всем доброго времени суток. Долго изучал споры в сети по той теме, какой же компилятор С++ лучше, все-таки для себя решил, что будет лучше начать с него. Начинаю изучать С++ не совсем с нуля, до армии остановился на ссылках и указателях. И сразу же возник терзающий меня вопрос. Почему в Visual С++ конечный исполняемый файл получается таким толстым? Простой Hello World - 84 кб? Что это такое? Чему там занимать столько места? В gcc - 6 кб. Тот же Visual C++ 6.0 Standart Edition - 22 кб. И это в Release mode? Может кто-нибудь пояснить как это исправить? Может быть компилятор настраивается для этого как-то?

torauma
09-08-2013, 08:46
Взглянуть бы на исходник этого Hello World и на настройки компилятора.
все-таки для себя решил, что будет лучше начать с него. »
Со времен выхода MS Visual C++ 6.0 стандарт языка минимум 2 раза поменялся, так что лучше поновее что нибудь выбрать.

dronsky
09-08-2013, 09:50
Да, пожалуйста:
#include "stdafx.h"

int main(int argc, char* argv[])
{
printf("Hello World!\n");
return 0;
}

/G4 /Gz /ML /Za /w /W0 /GX /O1 /Ob0 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fo"Release/" /Fd"Release/" /FD /c

torauma
09-08-2013, 12:07
/G4 »
Эта опция точно лишняя. С версии 5.0 компилятор ее игнорирует.

Попробуйте разные настройки оптимизации (http://msdn.microsoft.com/en-us/library/aa278432%28v=vs.60%29.aspx). В частности, попробуйте /Os вместо /O1.
Ну и обратите внимание на описание /O1
Creates the smallest code in the majority of cases.
Может быть в данном случае она дает обратный результат.

/D "_MBCS" »
Насколько я понимаю, это включает поддержку MBCS. Возможно это влияет на размер.

Delirium
09-08-2013, 14:04
какой же компилятор С++ лучше, все-таки для себя решил, что будет лучше начать с него »
А почему? Да поправит меня гуру С++ pva, если я ошибаюсь.
По моему мнению, С++ сейчас стоит начинать изучать, только если планируется разрабатывать ПО для "железа". Писать простой прикладной софт на нем новичку тяжеловато, слишком много тонкостей и нюансов в языке. Почему не С#? Синтаксис тот же, только немного "проще", что ли. Не надо думать о указателях, адресации памяти, динамическом выделении памяти для массивов. C# более прикладной, что ли.

dronsky
09-08-2013, 20:35
А почему?
Профессионально программированием не занимался, но в общем и целом начал изучать все это очень давно (с 12 лет), пришлось многое повидать, на многом выпускать код, в основном под свои нужды. Возраст подошел, пора делать карьеру, т.к. эта индустрия мне знакома более, чем другие, решил попробовать себя в ней. Пришел в местную контору, мб слышали "MERA Networks". У нас для начала карьеры очень даже не плохо, студенты туда так и ломятся, неплохой соцпакет, загранкомандировки, вообщем, хорошая печь бородатых кодеров :kruto:

Но суть в чем: пришел к ним на собеседование, их техспец по С++ (других в тот день на месте не было) опрашивал меня, признаться честно, ответил я мало что (стало стыдно), вот и говорит, есть вариант податься либо в веб (Groovy & Grails, но мои знания по нему меня он, благо, не спрашивал, у него не тот профиль), либо учить С++. C груви я уже знаком, веб, конечно, очень популярная, перспективная область и все такое, но ЗП у них у сишников побольше будет (по сведениям из сети, по крайней мере), сфера у них в этой области достаточно широкая, для серваков и железа. Вот я и решил таки возобновить обучение. В перспективе планирую уйти куда-то покрупнее из-за ЗП (Intel, мб попытать счастья в Google).

dronsky
09-08-2013, 21:09
Цитата dronsky:
/G4 »
Эта опция точно лишняя. С версии 5.0 компилятор ее игнорирует.
Попробуйте разные настройки оптимизации. В частности, попробуйте /Os вместо /O1.
Ну и обратите внимание на описание /O1
Цитата:
Creates the smallest code in the majority of cases.
Может быть в данном случае она дает обратный результат.
Цитата dronsky:
/D "_MBCS" »
Насколько я понимаю, это включает поддержку MBCS. Возможно это влияет на размер. »
Стоило мне вручную поменять настройки, т.е. так:
/Gz /ML /Za /w /W0 /GX /Os /Ob0 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Fo"Release/" /Fd"Release/" /FD /c Компилятор вовсе перестал печь исполняемый файл, и ни на какие замены настроек более не реагировал никак. Исправил переустановкой среды.

pva
10-08-2013, 00:08
В gcc - 6 кб »
Не поверил, проверил:

#include <iostream>
using namespace std;

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

бинарник - 910 К

909*077 a.exe
1*272 test.o

из них код программы 1.2 К, остальное - runtime, debug information
Может кто-нибудь пояснить как это исправить »
Не понял, как должно быть "правильно". Если в смысле что код меньше - то не согласен. Можно провести аналогию с огромным внедорожником: когда ему за руль садится миниатюрная блондинка, он всё равно больше "лады-калины".

torauma
12-08-2013, 09:56
pva, у меня почему-то другой резльтат получился:

# du -b *
6192 hello_iostream
102 hello_iostream.cpp
1908 hello_iostream.o
4937 hello_printf
95 hello_printf.cpp
1072 hello_printf.o

pva
12-08-2013, 18:02
не удивительно, разные компиляторы. Я собирал migw gcc 4.7 под ia-32. Сколько весит исполняемый файл если libstdc++ линковать статически? (чтобы не таскать с собой его каждый раз)

pva
12-08-2013, 21:25
в линуксе действительно shared включен по умолчанию:

$ g++ -shared hello.cpp
$ ls -l
-rwxr-xr-x 1 andrey andrey 5279 Aug 12 17:03 a.out*
-rw-r--r-- 1 andrey andrey 94 Aug 12 16:49 hello.cpp

$ g++ -static hello.cpp
$ ls -l
-rwxr-xr-x 1 andrey andrey 1284734 Aug 12 17:03 a.out*
-rw-r--r-- 1 andrey andrey 94 Aug 12 16:49 hello.cpp

Знаит твоё решение - искать как линковать стандартные библиотеки (или runtime) динамически

dronsky
25-08-2013, 23:02
Таки да, заставило время перейти на Visual Studio 2012. В Realese mode конечный exe файл весит 12 кб.




© OSzone.net 2001-2012