Май 24 2010

Glibc

Published by

Оптимизация компиляции Glibc

Компиляция Glibc с возможностями GCC используется в основном коде glibc. Glibc идентифицирует GCC как компилятор и использует установленный флаги CFLAGS. Используя правильные CFLAGS для вашей системы, вы можете хорошо оптимизировать glibc.

Если вы использовали -fomit-frame-pointer, вы можете также поместить glibc-omitfp во флаги USE. Повторно пересоберите glibc.

emerge -avDN world

При этом соберутся Glibc и её зависимости. При компиляции glibc этот флаг активизирует флаг -enable-omitfp, который, в свою очередь, указывает glibc на использование -fomit-frame-pointer. В результате более безопасно устанавливается указатель кадра. Этот флаг устанавливает максимальную оптимизацию glibc и предоставляет два типа библиотек — ‘оптимизированная’ и ‘стандартная’. То есть, по умолчанию будут использоваться оптимизированные библиотеки, но при необходимости можно будет использовать ‘стандартную’ версию. Это увеличит размер glibc и приведет к обычному поведению при установленном -fomit-frame-pointer, т.е. сделает невозможным отладку (debug) программ, так что не используйте этот флаг если вы планируете заниматься разработкой программ. Теоретически этот флаг может вызвать некоторые ошибки компилятора, хотя на практике он достаточно безопасен, тем не менее вы были предупреждены.

http://ru.gentoo-wiki.com

2 responses so far

2 Responses to “Glibc”

  1. Battle Coderon 04 Авг 2011 at 22:23

    > т.е. сделает невозможным отладку (debug) программ
    Не совсем очевидно… отладку каких программ? установленных через emerge? или любых? то есть USE=»debug» больше не оказывает эффекта? А если я вручную какую-то программу сам скомпилю через gcc -g — разве это помешает мне её отладить?

  2. megabakson 04 Авг 2011 at 22:49

    USE=»debug» мало
    не забывай про то, что бинари strip-аются
    потому я использую вот такое

    #!/bin/bash
    export USE="debug"
    export CFLAGS="-O2 -march=core2 -mtune=generic -pipe -ggdb"
    export CXXFLAGS="${CFLAGS}"
    export FEATURES="nostrip"
    einstall $*

    einstall — это обёртка к emerge (просто монтирует /var/tmp/portage в tmpfs)

Trackback URI | Comments RSS

Leave a Reply


*

Powered by WordPress