URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 3022
[ Назад ]

Исходное сообщение
"какие есть способы уменьшить размер ELF? Часто надо"

Отправлено Lamr , 05-Июн-04 16:23 
суперкороткую затычку (напр CGI), 2-3 оператораю. Короче 4 Кб не выходит. Нет ли резервов? А если компилить в a.out? Подскажите, если кто имеет опыт, пожалуйста.

Содержание

Сообщения в этом обсуждении
"какие есть способы уменьшить размер ELF? Часто надо"
Отправлено XMan , 05-Июн-04 18:15 
strip имя_эльфа

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


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


"какие есть способы уменьшить размер ELF? Часто надо"
Отправлено Lamr , 08-Июн-04 01:22 

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


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

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

Спасибо


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

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

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


"какие есть способы уменьшить размер ELF? Часто надо"
Отправлено Lamr , 08-Июн-04 01:17 

>-nostdlib
>-nostartfiles
>-nodefaultlibs

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

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

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

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


"какие есть способы уменьшить размер ELF? Часто надо"
Отправлено Soldier , 08-Июн-04 07:06 
>суперкороткую затычку (напр 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 нарыл в инете, но не помню
где - давно это было.


"какие есть способы уменьшить размер ELF? Часто надо"
Отправлено Lamr , 08-Июн-04 16:01 

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

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


"какие есть способы уменьшить размер ELF? Часто надо"
Отправлено dimus , 20-Июл-04 10:25 
Если же не формировать эльф самому, то выйдет байт 450 - ассемблер рулит!
А вот адреса
- www.linuxassembly.org
- www.muppedlabs.com/~breadbox/software/tiny/teensy.html
А еще смотри Assembly-HOWTO

"какие есть способы уменьшить размер ELF? Часто надо"
Отправлено Lamr , 20-Июл-04 11:21 
>Если же не формировать эльф самому, то выйдет байт 450 - ассемблер
>рулит!

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

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

Best Regards!