2014 dxdy logo

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

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




 
 Масса хеллоуворлда 2.31 Мб
Сообщение28.05.2020, 05:43 
Хеллоуворлд, собранный с ключом -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 
У меня получилось 770 килобайт до strip и 699 килобайт после.
Linux, x86_64, gcc-9.2.0.

 
 
 
 Re: Масса хеллоуворлда 2.31 Мб
Сообщение28.05.2020, 10:02 
Hello World на каком языке? Собранный каким компилятором, на какой системе? Если речь идёт о C и glibc, то последняя, действительно, не рассчитана на статическую сборку, но программу можно собрать с другой стандартной библиотекой, например, musl.

 
 
 
 Re: Масса хеллоуворлда 2.31 Мб
Сообщение28.05.2020, 11:48 
aitap,
C++, Mingw, Win7

 
 
 
 Re: Масса хеллоуворлда 2.31 Мб
Сообщение28.05.2020, 12:16 
Аватара пользователя
Qlin в сообщении #1465575 писал(а):
Mingw

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

 
 
 
 Posted automatically
Сообщение28.05.2020, 13:04 
 i  Тема перемещена из форума «Программирование» в форум «Карантин»
по следующим причинам:

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

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

 
 
 
 Posted automatically
Сообщение02.06.2020, 13:08 
 i  Тема перемещена из форума «Карантин» в форум «Программирование»

 
 
 
 Re: Масса хеллоуворлда 2.31 Мб
Сообщение02.06.2020, 14:21 
176 кБ, MSVC2015.

 
 
 
 TINY
Сообщение02.06.2020, 17:42 
Аватара пользователя
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 
Sender в сообщении #1466551 писал(а):
176 кБ, MSVC2015.
Вы уверены, что все зависимости идут в комплекте, и на какой-нибудь другой машине программа не затребует очередную DLL ?

 
 
 
 Re: Масса хеллоуворлда 2.31 Мб
Сообщение03.06.2020, 21:47 
Qlin в сообщении #1465546 писал(а):
когда в каких-то экстремальных условиях пришлось бы экономить каждый байт

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

 
 
 
 Re: Масса хеллоуворлда 2.31 Мб
Сообщение03.06.2020, 21:52 
Qlin в сообщении #1466634 писал(а):
Вы уверены, что все зависимости идут в комплекте, и на какой-нибудь другой машине программа не затребует очередную DLL ?

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

 
 
 [ Сообщений: 12 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group