The OpenNET Project / Index page

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

Ключи компиляции gcc для минимизации размера программ (gcc optimization size compile)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: gcc, optimization, size, compile,  (найти похожие документы)
Date: Sun, 04 Aug 2002 20:01:46 +0600 From: Eugene Grosbein <Eugene_Grosbein@f1.n5006.z2.fidonet.org> Newsgroups: fido7.ru.unix.prog Subject: Ключи компиляции gcc для минимизации размера программ AB> С какой опцией пользовать gcc, чтобы бинари получались меньше 4K? AB> я так понимаю это он их дебуг-инфой набивает? Hапример, так: # cat hello.c #define MESG "Hello, world!\n" #define MESG_SZ sizeof(MESG)-1 main() { write(1,MESG,MESG_SZ); _exit(0); } # gcc -nostartfiles -nodefaultlibs -nostdlib -fomit-frame-pointer -static -s \ -O99 -o hello hello.c -lc Hа FreeBSD 4.6-STABLE будет 3624 байта. AB> натравливал на бинари strip... размер на ~2k меньше становится... только вот AB> бинарь типа "helloworld"... и если линковать его ld -o binar binar.o, то выходит AB> около 500 байт... Если охота поиграться, посмотри это вариант: # cat hello2.c #define MESG "Hello, world!\n" #define MESG_SZ sizeof(MESG)-1 int errno; main() { write(1,MESG,MESG_SZ); _exit(0); } # OBJS=/usr/obj/usr/src/lib/libc/ \ gcc -nostartfiles -nodefaultlibs -nostdlib -s -static -O99 \ -Wl,--entry=main,--gc-section -o hello2 hello2.c \ $OBJS/write.o $OBJS/_exit.o $OBJS/cerror.o \ $OBJS/__error.o Этот вариант даст 604 байта. Для законченных извращенцев есть и третий: # cat hello3.c #define MESG "Hello, world!\n" #define MESG_SZ sizeof(MESG)-1 #define write(a,b,c) syscall(4,a,b,c) #define _exit(a) syscall(1,a) int errno; main() { write(1,MESG,MESG_SZ); _exit(0); } # SRCS=/usr/src/lib/libc gcc -I$SRCS/i386 -nostartfiles -nodefaultlibs -nostdlib -s \ -static -O99 -fomit-frame-pointer -Wl,--entry=main,--gc-section \ -o hello3 hello3.c $SRCS/i386/sys/syscall.S \ $SRCS/i386/sys/cerror.S $SRCS/sys/__error.c Это будет 508 байт. Удовлетворен? :-)

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

Обсуждение [ RSS ]
  • 1, Sergey (??), 13:20, 21/01/2007 [ответить]  
  • +/
    а можно ети все флаги (для 3его варианта) добавить в мейк.конф? и как это правильно сделать?
     

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




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

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