Обычно хранится в разделе комментариев
strings -a <binary/library> |grep "GCC: ("
возвращает GCC: (GNU) XXX
strip -R .comment <binary>
strings -a <binary/library> |grep "GCC: ("
возвращает отсутствие вывода
Это не редкость длявырезать раздел .comment (а также .note), чтобы уменьшить размер с помощью
strip --strip-all -R .note -R .comment <binary>
strip --strip-unneeded -R .note -R .comment <library>
Примечание: строки busybox задают опцию -a по умолчанию, которая необходима для раздела .comment
Редактировать: Вопреки ответу Берендры Туслы, этот метод не нужно компилировать с какими-либо флагами отладки.
Двоичный пример:
# echo "int main(void){}">a.c
# gcc -o a a.c -s
# strings -a a |grep GCC
GCC: (GNU) 4.3.4
# strip -R .comment a
# strings -a a |grep GCC
#
Пример объекта:
# gcc -c a.c -s
# strings -a a.o |grep GCC
GCC: (GNU) 4.3.4
# strip -R .comment a.o
# strings -a a |grep GCC
#
Обратите внимание на отсутствие каких-либо флагов -g (отладка) и наличие флага -s, который удаляет ненужные символы.Информация GCC по-прежнему доступна, если только раздел .comment не будет удален.Если вам нужно сохранить эту информацию нетронутой, вам может потребоваться проверить ваш make-файл (или соответствующий скрипт сборки), чтобы убедиться, что -fno-идент нет в вашем $ CFLAGS и что в команде $ STRIP отсутствует -R .comment.-fno-идент запрещает gcc генерировать эти символы в разделе комментариев для начала.