2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Масса хеллоуворлда 2.31 Мб
Сообщение28.05.2020, 05:43 


06/04/18

323
Хеллоуворлд, собранный с ключом -static, занимает 2.31 Мб. Ситуация неприятная. Получается, что для работоспособности простейшей программы должен быть прилинкован большой кусок библиотечного спама, из которого большая часть видимо никак фактически не используется. Является ли эта ситуация нормальной? Может быть есть какие-то рецепты, как уменьшить размер программы ?

Пример классический:
Используется синтаксис C++
#include <iostream>
using namespace std;

int main()
{
  cout << "Hello World\n";
  return 0;
}
Собирается следующим образом: g++ main.cpp -o main.exe -static
Если тем же способом собрать минимальную программу на C++
Используется синтаксис C++
int main() { }
то размер будет всего 52 кб (и с ключом -static, и без него).
Pphantom в сообщении #1465592 писал(а):
зачем нужно решать обсуждаемый вопрос
Просто ради интереса. Хотя можно придумать ситуацию, когда в каких-то экстремальных условиях пришлось бы экономить каждый байт.

 Профиль  
                  
 
 Re: Масса хеллоуворлда 2.31 Мб
Сообщение28.05.2020, 08:54 


02/12/18
88
У меня получилось 770 килобайт до strip и 699 килобайт после.
Linux, x86_64, gcc-9.2.0.

 Профиль  
                  
 
 Re: Масса хеллоуворлда 2.31 Мб
Сообщение28.05.2020, 10:02 


09/05/16
138
Hello World на каком языке? Собранный каким компилятором, на какой системе? Если речь идёт о C и glibc, то последняя, действительно, не рассчитана на статическую сборку, но программу можно собрать с другой стандартной библиотекой, например, musl.

 Профиль  
                  
 
 Re: Масса хеллоуворлда 2.31 Мб
Сообщение28.05.2020, 11:48 


06/04/18

323
aitap,
C++, Mingw, Win7

 Профиль  
                  
 
 Re: Масса хеллоуворлда 2.31 Мб
Сообщение28.05.2020, 12:16 
Заслуженный участник
Аватара пользователя


01/09/13
4666
Qlin в сообщении #1465575 писал(а):
Mingw

А это зачем? ;-)

 Профиль  
                  
 
 Posted automatically
Сообщение28.05.2020, 13:04 
Заслуженный участник


09/05/12
25179
 i  Тема перемещена из форума «Программирование» в форум «Карантин»
по следующим причинам:

- без указания конкретных условий (не только ОС, языка и компилятора, которые должны были появиться в первом сообщении, но и самой программы вместе с параметрами сборки) обсуждать нечего;
- в подобных случаях явно требуется обоснование, зачем нужно решать обсуждаемый вопрос.

Исправьте все Ваши ошибки и сообщите об этом в теме Сообщение в карантине исправлено.
Настоятельно рекомендуется ознакомиться с темами Что такое карантин и что нужно делать, чтобы там оказаться и Правила научного форума.

 Профиль  
                  
 
 Posted automatically
Сообщение02.06.2020, 13:08 
Заслуженный участник


09/05/12
25179
 i  Тема перемещена из форума «Карантин» в форум «Программирование»

 Профиль  
                  
 
 Re: Масса хеллоуворлда 2.31 Мб
Сообщение02.06.2020, 14:21 


14/01/11
3058
176 кБ, MSVC2015.

 Профиль  
                  
 
 TINY
Сообщение02.06.2020, 17:42 
Аватара пользователя


10/10/18
754
At Home
Qlin в сообщении #1465546 писал(а):
...когда в каких-то экстремальных условиях пришлось бы экономить каждый байт.
В конце 90-х — самом начале 2000-х, немного заинтересовавшись подобным, я написал для себя несколько программок с простой функциональностью размером в 1 килобайт и чуть больше. Программками пользовался. Некоторые были предназначены и для вызова из других программ. Некоторая информация сохранилась.

beep [count] // == beep [count]
boot // force system reboot
find directory // диалог поиска файлов
prop name // == <AltEnter> in Explorer
sleep [milliseconds] // == sleep [milliseconds]
run [name] // диалог запуска программ — 1.5 килобайта
crc // сервер вычисления контрольной суммы — 3.5 килобайта

Основное (что помню) — не использовались никакие RunTime, своя EntryPoint, объединение секций, выравнивание секций минимальное (сколь помню, 16 байт).

Компилятор — VC6. Исходные тексты "малюток" — в одном файле, crc — отдельный проект.

В архиве ME_UTIL_SOURCES смотрите файлы tiny.txt, _readme.txt и каталоги tiny и crc — там есть и проекты (.dsp, .dsw) для VS6. В архиве ME в каталоге util есть некоторые exe (find, prop, run, crc). Остальные exe у меня на компьютере, но он старенький (1997 года сборки) и включается "с норовом", я его поменьше беспокою.

//

 Профиль  
                  
 
 Re: Масса хеллоуворлда 2.31 Мб
Сообщение02.06.2020, 20:19 


06/04/18

323
Sender в сообщении #1466551 писал(а):
176 кБ, MSVC2015.
Вы уверены, что все зависимости идут в комплекте, и на какой-нибудь другой машине программа не затребует очередную DLL ?

 Профиль  
                  
 
 Re: Масса хеллоуворлда 2.31 Мб
Сообщение03.06.2020, 21:47 


05/09/12
2587
Qlin в сообщении #1465546 писал(а):
когда в каких-то экстремальных условиях пришлось бы экономить каждый байт

не шикуют с
Используется синтаксис C++
cout
и даже с
Используется синтаксис C
printf
. Изредка могут пошиковать с
Используется синтаксис C
putchar
, но чаще просто по усарту гонят байты.

 Профиль  
                  
 
 Re: Масса хеллоуворлда 2.31 Мб
Сообщение03.06.2020, 21:52 


14/01/11
3058
Qlin в сообщении #1466634 писал(а):
Вы уверены, что все зависимости идут в комплекте, и на какой-нибудь другой машине программа не затребует очередную DLL ?

Ну в общем да, с динамической линковкой получается 11 кБ. :-)

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 12 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group