The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Оптимизация приложения "Hello world"

17.03.2010 13:56

В заметке "Hello from a libc-free world!" рассмотрен вопрос неоптимальной компоновки простейшего приложения на языке Си, возможности которого ограничены присвоением переменной текста "Hello world". При компиляции такой программы в GCC результирующий исполняемый файл имеет размер 11 Кб. При попытке разобраться почему так много, выяснилось, что компилятор использует вызов libc, даже если функции данной библиотеки не используются в самой программе.

При сборке "gcc -nostdlib -o hello hello.c" размер программы сократился до 1 Кб, но такая программа перестала выполняться корректно. Для исправления ситуации был сформирован упрощенный блок инициализации (подпрограмма _start). В сети также доступно более подробное руководство по сокращению исполняемых файлов в формате ELF.

Дополнение: опубликована вторая часть статьи.

  1. Главная ссылка к новости (http://blog.ksplice.com/2010/0...)
Лицензия: CC-BY
Тип: английский / Практикум
Короткая ссылка: https://opennet.ru/25829-elf
Ключевые слова: elf, gcc, compile, lib, assembler, link, optimization
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение (80) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Vitto74 (ok), 14:00, 17/03/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Что называется нет предела совершенству.
     
     
  • 2.5, Аноним (-), 14:25, 17/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Что называется делать нечего.
    Большенство программ требуют стандартную библиотеку для работы. А те, что не требуют, те проще написать на ассемблере. Извращение это все...
     
     
  • 3.6, User294 (ok), 14:34, 17/03/2010 [^] [^^] [^^^] [ответить]  
  • +/

    > А те, что не требуют, те проще написать на ассемблере.

    На ассемблере какого процессора, сэр? У ассемблера есть одна проблемка - он непортабельный. И собственно а вы пробовали на ассемблере писать всю программу, а не кусочки? Под линух? И как, вам это показалось очень простым начинанием? Ну-ну, языком трындеть не мешки ворочать :). А писать под линух на голом асме от и до - очень на любителя. Не хочу ничего сказать но под операционки писанные на сях, удобно писать на сях. На асме получается довольно колебательно в общем случае.

     
     
  • 4.10, Аноним (-), 14:39, 17/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    да ладно, практического смысла это имеет мало. лучше бы скорость загрузки библиотек в память увеличили и в gcc оптимизатор в отдельный проект выделили по типа LLVM чтобы его можно было независимо развивать
     
     
  • 5.17, User294 (ok), 15:47, 17/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Когда как Вот немного лирики http www wasm ru article php article onebyte ... большой текст свёрнут, показать
     
     
  • 6.18, Аноним (-), 15:57, 17/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >(в общем зажирается народец, мозг отключает, начинает мыслить как быдло - стыдно, а?...)

    тот кто мыслит как быдло пишет на жабе и C#


    >А зачем все под 1 гребенку то? Есть железобетонная уверенность что так
    >- лучше и баста? И для кого лучше? И почему?

    потому что тогда это будет отдельный проект который можно будет развивать независимо.
    помоему это главный плюс LLVM. нужно то-же только под GPL.


    >Как бы слегка разные сущности, а?

    разные. я о том что силы не туда тратят

     
     
  • 7.23, User294 (ok), 16:16, 17/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Мыслить как быдло можно в принципе на любом языке Быдло предпочитает упомянутые... большой текст свёрнут, показать
     
     
  • 8.25, Аноним (-), 16:25, 17/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Можно Но не обязательно все же писать все на asm Можно и сайты на asm писать, ... текст свёрнут, показать
     
     
  • 9.38, Ariel (??), 17:02, 17/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    скорее GCC - плагин к LLVM, на Mac используется с 2007 г LLVM-GCC4 2, что вам ме... большой текст свёрнут, показать
     
     
  • 10.41, Аноним (-), 17:48, 17/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    считайте что религия свободная GPL альтернатива LLVM которая заменит в перспект... текст свёрнут, показать
     
     
  • 11.53, Ariel (??), 20:09, 17/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    LLVM вам не нравится свободной лицензией BSD статью о его возможностях вообще ч... текст свёрнут, показать
     
     
  • 12.57, User294 (ok), 21:17, 17/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Да, потом нам будут приезжать очень такие свободные тулчейны в виде блобятины по... текст свёрнут, показать
     
  • 10.65, минона (?), 12:33, 18/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    перечетайте статью и не только про llvm ещё раз, т к у вас каша в голове 1 ... большой текст свёрнут, показать
     
     
  • 11.67, аноним (?), 13:48, 18/03/2010 [^] [^^] [^^^] [ответить]  
  • –2 +/
    дотнет генерирует _нативный_ код... текст свёрнут, показать
     
     
  • 12.68, минона (?), 14:10, 18/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    развейте свою мысль и тогда поговорим ps возможность такая есть но также есть... текст свёрнут, показать
     
  • 12.70, User294 (ok), 14:18, 18/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Что сказать то хотели В конечном итоге процы нихрена кроме нативного кода выпол... текст свёрнут, показать
     
  • 11.84, Ariel (??), 22:55, 18/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    статью писал не я 1, 2 LLVM не моджет иметь синтаксический или лексический анал... текст свёрнут, показать
     
     
  • 12.85, минона (?), 23:44, 18/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    это гораздо ближе к истине кроме вот этого тогда придумайте зачем понадобились... текст свёрнут, показать
     
     
  • 13.87, Ariel (ok), 01:30, 20/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    если понимать LLVM в узком смысле, то вы правы, но Крис как бы намекает нам, чт... большой текст свёрнут, показать
     
  • 10.78, User294 (ok), 20:16, 18/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Тут еще минета Джоббсу не хватает в знак признательности, или типа того Лично ... большой текст свёрнут, показать
     
  • 9.69, User294 (ok), 14:15, 18/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    В этом треде никто и не предлагал писать на асме Более того, тут вообще только ... большой текст свёрнут, показать
     
     
  • 10.72, минона (?), 14:54, 18/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    все верно, кроме одного вот выдержки - http ru wikipedia org wiki Unix_way бо... большой текст свёрнут, показать
     
     
  • 11.80, User294 (ok), 20:38, 18/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Подождите, уважаемый минона, а разве я вообще утверждал что скорость надо оптими... большой текст свёрнут, показать
     
     
  • 12.82, минона (?), 21:14, 18/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    может быть я не так понял но я точно уверен, что сила юниксвэй вообще и линукс ... текст свёрнут, показать
     
     
  • 13.83, минона (?), 21:22, 18/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    а да в посикс нет завязок ни на фс, ни на их реализации и т д иногда проще в л... текст свёрнут, показать
     
  • 10.74, Аноним (-), 15:52, 18/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Эти две фразы противоречат друг другу Сначала приложение нужно разработать, пот... большой текст свёрнут, показать
     
     
  • 11.79, User294 (ok), 20:27, 18/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Нормальный архитект должен прикинуть проблемные места еще на фазе проектирования... большой текст свёрнут, показать
     
  • 4.16, mike lee (?), 15:44, 17/03/2010 [^] [^^] [^^^] [ответить]  
  • +1 +/
    ты статейку то открой. автор так или иначе предлагает непортабельный код, заменяя стандартную точку входа своей. другое дело что кода там 4 строчки, но в любом случае все это должно носить только познавательный характер.
     
     
  • 5.24, User294 (ok), 16:19, 17/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >но в любом случае все это должно носить только познавательный характер.

    Когда как. В какомнить embedded такое на каждом углу. Иногда натурально бывает надо сэкономить каждый байт любой ценой, например. Скажем если надо в 2-меговую флеху затрамбовать всего пингвина с кучей демонов, экономия по 10 кило на файл врядли покажется какой-то ненужной сущностью. Особенно если окажется что образ не лезет на каки-то чертовы 50 кило а перепаивать флеху в миллионе плат на более емкую стоит астрономических бабок :)


     
  • 2.9, User294 (ok), 14:38, 17/03/2010 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >Что называется нет предела совершенству.

    Есть :) программы отрицательной длины не бывают :P.

     
     
  • 3.36, savant (ok), 16:53, 17/03/2010 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Ага, идеальна та программа, которая не написана
     

  • 1.2, Зилибоба (ok), 14:07, 17/03/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Хм, может там еще есть что соптимизировать?
     
     
  • 2.86, hhg (ok), 22:02, 19/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    ага, можно. можно выкинуть нафик строку. назвать прогу "Хелло ворлд" и выводить имя исполняемого файла из переменных окружения.
    Ж:-P
     

  • 1.3, www2 (ok), 14:11, 17/03/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Как будто неоптимизированные программы закончились, принялись за столь полезную программу, как Hello World.
     
     
  • 2.8, User294 (ok), 14:37, 17/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    ИМХО, это можно засчитать за вполне вменяемый туториал по поводу того как и что подкрутить в компилере чтобы стало поменьше размером. При том учиться это делать на мелкой проге типа hello world в 100500 раз проще чем пытаться с места в карьер заоптимизировать многомеговое монстрило. Вы как, вашу первую программу тоже писали сразу на много мегабайт весом и со всеми наворотами, с миллионами строк исходника?
     
     
  • 3.11, Аноним (-), 14:42, 17/03/2010 [^] [^^] [^^^] [ответить]  
  • +2 +/
    многомеговое монстрило по любому будет завязано на libc - бессмыленно это.
     
     
  • 4.19, User294 (ok), 15:59, 17/03/2010 [^] [^^] [^^^] [ответить]  
  • +2 +/
    >многомеговое монстрило по любому будет завязано на libc - бессмыленно это.

    Бессмысленно - пытаться освоить азы на сложной и навороченной конструкции. Это как раз логично делать не чем-то предельно простом. Если вы впервые в жизни сели за руль - очень странно будет сесть за руль самого крутого гоночного болида и немедленно попытаться поставить мировой рекорд на извилистой трассе. Скорее всего это ни к чеиу хорошему не приведет и ваши кишки придется отскребать от асфальта.

    ЗЫ а если вам впадлу учить основы работы компилера или думалки на это не хватает - так и скажите, паясничать и оправдывться совершенно не обязательно.

     
     
  • 5.26, Аноним (-), 16:27, 17/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >Бессмысленно - пытаться освоить азы на сложной и навороченной конструкции.

    В реальной программе в любом случае будет зависимость на libc. Это не "hello world".
    Это все забавно почитать чтобы понять что происходит (если не знаешь) но вот практического смысла в реальной программе это не имеет.

     
     
  • 6.47, аноним (?), 18:45, 17/03/2010 [^] [^^] [^^^] [ответить]  
  • –2 +/
    >Это все забавно почитать чтобы понять что происходит (если не знаешь) но
    >вот практического смысла в реальной программе это не имеет.

    практический смысл имеет переработка гцц, дабы тот перестал вываливать неэффективный код.

     
     
  • 7.56, Карбофос (ok), 20:50, 17/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    пройди вступительный тест в разрабы gcc  и переработай его.
     
  • 7.81, User294 (ok), 20:41, 18/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    К link-time оптимизации весь этот бред вообще никак не относится. А hand-optimized asm в критичных кусках всяко будет заруливать ту мешанину которую компилеры генерят. Потому что как ни крути а иногда даже самый хороший оптимизатор может весьма хорошо протупить.
     
  • 6.60, User294 (ok), 21:27, 17/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >В реальной программе в любом случае будет зависимость на libc.

    Далеко не в любом. Скажем в embedded отсутствие стандартной либы вообще норма жизни. Или завязка на какойнить минимальный uclibc.

    >Это не "hello world".

    So what?

    >Это все забавно почитать чтобы понять что происходит (если не знаешь) но
    >вот практического смысла в реальной программе это не имеет.

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

     
  • 6.64, phaoost (ok), 10:40, 18/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    почему это в любом? а если dietlibc или ulibc
     

  • 1.4, Аноним (-), 14:22, 17/03/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Вот бы так еще ядро оптимизировали...
     
  • 1.7, zazik (ok), 14:35, 17/03/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А вы знаете, что если в PHP вместо двойных кавычек использовать одинарные, то парсер не будет пытаться найти и подставить переменные в этой строке. А ведь это драгоценные такты!
     
     
  • 2.20, Аноним (-), 15:59, 17/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >А ведь это драгоценные такты!

    потому и написали компилятор PHP, потому что спрыгивать с этого дерьма на что-то более быстрое (когда все уперлось в него) еще дольше чем написать компилятор

     
     
  • 3.22, zazik (ok), 16:05, 17/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >>А ведь это драгоценные такты!
    >
    >потому и написали компилятор PHP, потому что спрыгивать с этого дерьма на
    >что-то более быстрое (когда все уперлось в него) еще дольше чем
    >написать компилятор

    А вам не кажется, что если бы он был таким дерьмом, то на нём не писало бы такое количество людей?

     
     
  • 4.27, Аноним (-), 16:30, 17/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >А вам не кажется, что если бы он был таким дерьмом, то на нём не писало бы такое количество людей?

    Миллионы мух не могут ошибаться в дерьме определенно что-то есть?

     
     
  • 5.28, zazik (ok), 16:33, 17/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >Миллионы мух не могут ошибаться в дерьме определенно что-то есть?

    Ничего не понял, знаки препинания помогут тебе вдохнуть смысл в сей набор слов.

     
     
  • 6.63, Аноним (-), 08:48, 18/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >>Миллионы мух не могут ошибаться в дерьме определенно что-то есть?
    >
    >Ничего не понял, знаки препинания помогут тебе вдохнуть смысл в сей набор
    >слов.

    Вы правда никогда не слышали это выражение?

     
  • 4.29, Аноним (-), 16:35, 17/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    > А вам не кажется, что если бы он был таким дерьмом, то на нём не писало бы такое количество людей?

    нет не кажется.

     
  • 4.32, аноним (?), 16:40, 17/03/2010 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Про Windows напомнить? Быдло всегда ищет где поменьше думать надо.
     
     
  • 5.33, zazik (ok), 16:43, 17/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >Про Windows напомнить? Быдло всегда ищет где поменьше думать надо.

    OMG, это в Пыхе-то думать не надо? Да, там нет строгой типизации, ну и что? Думать там приходится не меньше, чем в других языках, если хочешь написать пристойный код.

     
     
  • 6.35, Cobold (??), 16:50, 17/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >>Про Windows напомнить? Быдло всегда ищет где поменьше думать надо.
    >
    >OMG, это в Пыхе-то думать не надо? Да, там нет строгой типизации,
    >ну и что? Думать там приходится не меньше, чем в других
    >языках, если хочешь написать пристойный код.

    в исходники php загляните чтобы говорить о его "качестве".

     
     
  • 7.37, zazik (ok), 16:54, 17/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >в исходники php загляните чтобы говорить о его "качестве".

    И что там, в исходниках? Зашифрованный призыв Сатаны?

     
     
  • 8.39, Cobold (??), 17:29, 17/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    там почерк создателей, иногда полезно познакомиться чтобы не поддаваться лишним ... текст свёрнут, показать
     
     
  • 9.40, zazik (ok), 17:31, 17/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Во-первых, у них есть нормальное коммунитэ, которое достаточно успешно патчит и ... текст свёрнут, показать
     
     
  • 10.51, Cobold (??), 19:20, 17/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    кстати, Вам не доводилось им багрепорты слать Субъективно конечно, может это то... текст свёрнут, показать
     
     
  • 11.52, zazik (ok), 19:54, 17/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Доводилось, правда один и по хелпу, а не по сырцам Относятся нормально, пофикси... текст свёрнут, показать
     
  • 7.43, azure (ok), 17:59, 17/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    как связана реализация языка (интерпретатор) с качеством написанного на нем кода?
     
     
  • 8.44, аноним (?), 18:14, 17/03/2010 [^] [^^] [^^^] [ответить]  
  • +1 +/
    В этом мире все связано Хуже интерпретатор - медленнее исполняется код Неэффек... текст свёрнут, показать
     
     
  • 9.48, аноним (?), 18:51, 17/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    трололо кстати, sql тоже изначально рассчитан на непрофессионалов отказываешьс... текст свёрнут, показать
     
     
  • 10.50, Cobold (??), 19:02, 17/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    И кто его сечас собственно как язык программирования использует Это скорее прот... текст свёрнут, показать
     
  • 9.49, Cobold (??), 18:55, 17/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    1 да, а ещё количество идиотских багов, нестабильность языка и настроек дефолтн... текст свёрнут, показать
     
  • 4.34, Cobold (??), 16:46, 17/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    очень наивно
     
     
  • 5.46, аноним (?), 18:43, 17/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    местечковые гуру зрят в корень.
    все переходим на perl6
     
  • 4.59, pavlinux (ok), 21:21, 17/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    А кто вам сказал, что на нем пишут?  
    99.9% Веб-дезигнеров никогда с нуля не писали - Google -> Шаблоны для сайта скачать.  :)
    А потом узнают, что это хрень называется PHP, Ruby, JS ...
    И давай кричать на сайтах "- Я знаю кунг-фу!!!"
     
     
  • 5.61, zazik (ok), 23:35, 17/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >А кто вам сказал, что на нем пишут?
    >99.9% Веб-дезигнеров никогда с нуля не писали - Google -> Шаблоны для сайта скачать.  :)
    >А потом узнают, что это хрень называется PHP, Ruby, JS ...
    >И давай кричать на сайтах "- Я знаю кунг-фу!!!"

    Форум для разработчиков сказал.

     
     
  • 6.62, pavlinux (ok), 00:04, 18/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >>А кто вам сказал, что на нем пишут?
    >>99.9% Веб-дезигнеров никогда с нуля не писали - Google -> Шаблоны для сайта скачать.  :)
    >>А потом узнают, что это хрень называется PHP, Ruby, JS ...
    >>И давай кричать на сайтах "- Я знаю кунг-фу!!!"
    >
    >Форум для разработчиков сказал.

    Они-то и есть 1%

     

  • 1.12, Andrey Mitrofanov (?), 14:53, 17/03/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    [:::]
    http://www.muppetlabs.com/~breadbox/software/tiny/teensy.html
    http://bsd.opennet.ru/openforum/vsluhforumID9/3022.html
    И далее -- http://google.ru/search?q=assembler+linux+elf везде.
     
     
  • 2.54, Damon (??), 20:24, 17/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Странно, что на самом опеннете, никто ничего не искал похожего, а ведь есть пост "Борьба за уменьшения размера (до 300 байт!) программы "Hello,World" (optimization)" -- https://www.opennet.ru/base/dev/smallest_code.txt.html, сам по нему с gcc разбирался.
     
     
  • 3.71, Andrey Mitrofanov (?), 14:26, 18/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >Странно, что на самом опеннете, никто ничего не искал похожего

    Ну дык, даже первую страницу гугля лениво просматривать, не то что подбирать более релевантные запросыP))

    ---Война-то уже дааавно кончилась, а поезда всё везут и везут раненных анонимов, оптимизирующин на Hello.World[:::>

     

  • 1.15, aZ (ok), 15:19, 17/03/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Наконец-то опомнились. Теперь осталось оптимизировать всего-то миллионы программ.
     
     
  • 2.30, reanimat0r (?), 16:35, 17/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Золотые слова.
     

  • 1.21, Карбофос (ok), 16:03, 17/03/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    подобные туториалы есть и для виндов, вот это я использовал для написания дипломки. http://uinc.ru/articles/28/
     
  • 1.42, Diogene the Open Source programmer (?), 17:49, 17/03/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Муха-ха - вспомнилась молодость ...FIDO ... анологичный срач и как результат MS-DOS'овский .com длиной 26 байт включая знаменитую строку ... :)
     
  • 1.45, аноним (?), 18:19, 17/03/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Прикольно - этот hello, world, собранный на FreeBSD занимает по умолчанию в два раза меньше места, чем в linux.
     
     
  • 2.55, Damon (??), 20:37, 17/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >Прикольно - этот hello, world, собранный на FreeBSD занимает по умолчанию в
    >два раза меньше места, чем в linux.

    Там может выравнивание секций elf'а отличаться по дефолту. В исполняемых файлах (elf и pe), порой бывает некоторое кол-во мусора ( http://www.codenet.ru/progr/formt/elf_pe.php ):

    >>Некоторые особенности так же связаны со страничной организацией памяти.
    >>ELF файлы линкуются таким образом, что границы и размеры секций приходятся на 4-х килобайтные блоки файла.
    >>А в PE формате, не смотря на то, что сам формат позволяет выравнивать секции на 512 байт, используется выравнивание секций на 4к, меньшее выравнивание в Windows не считается корректным.

    Здесь, правда не тот случай -- сама программа меньше 4к. :-)
    Надо просто сравнить скрипты линкера, и несколько подкрутив, думаю, можно получить сравнимый с фряшным размер и в пингвине.

     
  • 2.58, Карбофос (ok), 21:19, 17/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    для этого надо проверить, какие секции в бинарники остаются. а в целом, про удаление ненужностей:

    http://timelessname.com/elfbin/
    http://www.muppetlabs.com/~breadbox/software/tiny/teensy.html
    http://www.codebreakers-journal.com/content/view/280/97/

     

  • 1.73, sluge (ok), 15:28, 18/03/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    реальный софт тащит за собой такую кучу библиотек что такая оптимизация не имеет смысла...
    хотя нет, имеет-для вирей например :-D
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Спонсоры:
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2020 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру