GCC разбивает пути в бинарнике на куски, и grep их не находит
Paths in Pieces
Дистрибутивы Linux и пакетные менеджеры проверяют собранные бинарники на абсолютные пути вроде /home/linuxbrew/.linuxbrew, чтобы те не сломались на машине пользователя. Но GCC с x86-64 разбивает строковые константы на 16-байтовые куски для векторных инструкций, и путь исчезает из бинарника: grep даёт ноль совпадений, а strings показывает выдуманный /home/linuxbrew/xbrew/.linuxbrew. Автор объясняет оптимизацию, дедупликацию повторяющихся кусков и почему её стоит отключить.
Другими словами, запуск strings ./binary — настолько простой и удобный способ заглянуть внутрь непрозрачного бинарного блоба, что он перевешивает ту минимальную экономию, которую дают разбиение на куски и дедупликация.