The OpenNET Project / Index page

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

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"какие есть способы уменьшить размер ELF? Часто надо"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"какие есть способы уменьшить размер ELF? Часто надо"
Сообщение от Lamr emailИскать по авторуВ закладки on 05-Июн-04, 16:23  (MSK)
суперкороткую затычку (напр CGI), 2-3 оператораю. Короче 4 Кб не выходит. Нет ли резервов? А если компилить в a.out? Подскажите, если кто имеет опыт, пожалуйста.
  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "какие есть способы уменьшить размер ELF? Часто надо"
Сообщение от XMan Искать по авторуВ закладки(??) on 05-Июн-04, 18:15  (MSK)
strip имя_эльфа
  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "какие есть способы уменьшить размер ELF? Часто надо"
Сообщение от Vladislav Lazarenko emailИскать по авторуВ закладки on 07-Июн-04, 12:51  (MSK)
>суперкороткую затычку (напр CGI), 2-3 оператораю. Короче 4 Кб не выходит. Нет
>ли резервов? А если компилить в a.out? Подскажите, если кто имеет
>опыт, пожалуйста.


1) -Os при компиляции, но меленький размер - не всегда маленькая производительность ...
2) man strip
3) strip -s <executable>

  Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "какие есть способы уменьшить размер ELF? Часто надо"
Сообщение от Lamr emailИскать по авторуВ закладки on 08-Июн-04, 01:22  (MSK)

>1) -Os при компиляции, но меленький размер - не всегда маленькая производительность
>...
>2) man strip
>3) strip -s <executable>


а я думал что у gcc есть ключи для компиляции не в ELF а в старый a.out но ничего в мане  не нашёл :-(((

Из 4952 Получилось 3284

Спасибо

  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "какие есть способы уменьшить размер ELF? Часто надо"
Сообщение от vnp emailИскать по авторуВ закладки on 07-Июн-04, 23:34  (MSK)
>суперкороткую затычку (напр CGI), 2-3 оператораю. Короче 4 Кб не выходит. Нет
>ли резервов? А если компилить в a.out? Подскажите, если кто имеет
>опыт, пожалуйста.

Есть, есть резервы:
-nostdlib
-nostartfiles
-nodefaultlibs

Но овчинка выделки не стоит. Головной боли не оберетесь. А выигрыш не ахти какой: int main() { return 0; } довелся до 600 байт. Если дело в размере, может, лучше на перле?

  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "какие есть способы уменьшить размер ELF? Часто надо"
Сообщение от Lamr emailИскать по авторуВ закладки on 08-Июн-04, 01:17  (MSK)

>-nostdlib
>-nostartfiles
>-nodefaultlibs

спасибо, но я всё же пользую stdlib
CGI скрипт возвращает браувсеру Status: 301 и Location: зависимый от строки запроса

>байт. Если дело в размере, может, лучше на перле?

интерпретатор заглотит на порядок больше ресурсов.
А на диске - без разницы.

Всем огромное спасибо.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

6. "какие есть способы уменьшить размер ELF? Часто надо"
Сообщение от Soldier Искать по авторуВ закладки(??) on 08-Июн-04, 07:06  (MSK)
>суперкороткую затычку (напр CGI), 2-3 оператораю. Короче 4 Кб не выходит. Нет
>ли резервов? А если компилить в a.out? Подскажите, если кто имеет
>опыт, пожалуйста.

Есть еще одна возможность - самому сформировать ЭЛЬФА. Для этого можно
использовать assembler. Например в моем любимом nasm-е есть опция -f bin,
позволяющая создавать бинарники:


;; hello.asm
BITS 32
                org     0x05936000
                db      0x7F, "ELF"
                dd      1
                dd      0
                dd      $$
                dw      2
                dw      3
_start:         inc     eax
                mov     dl, 13
                cmp     al, _start - $$
                pusha
                xchg    eax, ebx
                add     eax, dword 4
                mov     ecx, msg
                int     0x80
                popa
                int     0x80
                dw      0x20
                dw      1
msg:            db      'hello, world', 10
;;----------------------------------------

компилить так:

nasm -f bin -o hello hello.asm
chmod +x hello

Размер 59 байт. Работает под Линуксом с ядрами от 2.2

Этот пример и доки как создавать маленькие ELF нарыл в инете, но не помню
где - давно это было.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

7. "какие есть способы уменьшить размер ELF? Часто надо"
Сообщение от Lamr emailИскать по авторуВ закладки on 08-Июн-04, 16:01  (MSK)

>использовать assembler. Например в моем любимом nasm-е есть опция -f bin,
>позволяющая создавать бинарники:

вот-вот, что-то типа этого и надо.
На асме я под *NIX не писал ещё, надо попробовать

  Рекомендовать в FAQ | Cообщить модератору | Наверх

8. "какие есть способы уменьшить размер ELF? Часто надо"
Сообщение от dimus Искать по авторуВ закладки(ok) on 20-Июл-04, 10:25  (MSK)
Если же не формировать эльф самому, то выйдет байт 450 - ассемблер рулит!
А вот адреса
- www.linuxassembly.org
- www.muppedlabs.com/~breadbox/software/tiny/teensy.html
А еще смотри Assembly-HOWTO
  Рекомендовать в FAQ | Cообщить модератору | Наверх

9. "какие есть способы уменьшить размер ELF? Часто надо"
Сообщение от Lamr emailИскать по авторуВ закладки on 20-Июл-04, 11:21  (MSK)
>Если же не формировать эльф самому, то выйдет байт 450 - ассемблер
>рулит!

Спасибо за ссылки, dimus.

  Короткий опыт использования бинарных CGI показал, что прога, собраная с библиотеками статически (-static) отрабатывает быстрее, а самое главное - не требует бинарников из /usr/lib, которых, как показал опыт, иногда нужных не бывает.
  Задача, собранная с библиотеками статически, на порядок больше размером. В связи с чем борьба за каждый байт становится бессмысленной. Если 4K или 3K - это большая разница, то 64K или 63K - разница неощутима. Хотя все возможные ключи для оптимизации размера, конечно, применяю.

Best Regards!

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




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

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