Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   [решено] MS Visual C++ 6.0 Professional Edition (http://forum.oszone.net/showthread.php?t=265831)

dronsky 09-08-2013 03:03 2198803

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

torauma 09-08-2013 08:46 2198844

Взглянуть бы на исходник этого Hello World и на настройки компилятора.
Цитата:

Цитата dronsky
все-таки для себя решил, что будет лучше начать с него. »

Со времен выхода MS Visual C++ 6.0 стандарт языка минимум 2 раза поменялся, так что лучше поновее что нибудь выбрать.

dronsky 09-08-2013 09:50 2198868

Да, пожалуйста:
Код:

#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 2198940

Цитата:

Цитата dronsky
/G4 »

Эта опция точно лишняя. С версии 5.0 компилятор ее игнорирует.

Попробуйте разные настройки оптимизации. В частности, попробуйте /Os вместо /O1.
Ну и обратите внимание на описание /O1
Цитата:

Creates the smallest code in the majority of cases.
Может быть в данном случае она дает обратный результат.

Цитата:

Цитата dronsky
/D "_MBCS" »

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

Delirium 09-08-2013 14:04 2199022

Цитата:

Цитата dronsky
какой же компилятор С++ лучше, все-таки для себя решил, что будет лучше начать с него »

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

dronsky 09-08-2013 20:35 2199242

Цитата:

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

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

dronsky 09-08-2013 21:09 2199257

Цитата:

Цитата torauma
Цитата 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 2199344

Цитата:

Цитата dronsky
В 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
Цитата:

Цитата dronsky
Может кто-нибудь пояснить как это исправить »

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

torauma 12-08-2013 09:56 2200182

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 2200411

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

pva 12-08-2013 21:25 2200501

в линуксе действительно 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 2207601

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


Время: 07:28.

Время: 07:28.
© OSzone.net 2001-