Могу ошибаться, но думаю, что работает такая схема: сначала идёт поиск по директориям, определённым при компиляции gcc (см. gcc -print-search-dirs), а также указанных опцией -B и переменной GCC_EXEC_PREFIX, если ничего подходящего там найти не удалось, ищется в $PATH. К дефолтовым можно добавить директории, указав в спеках нужное значение *startfile_prefix_spec (файл `dirname $(gcc -print-libgcc-file-name)`/specs, если он не существует, его можно создать командой gcc -dumpspecs).
При компиляции gcc в скрипт configure передается путь относительно которого расположены его рабочие директории например --prefix=/usr. Все так же как и у других программ.
При компиляции gcc в скрипт configure передается путь относительно которого расположены его рабочие директории например --prefix=/usr. Все так же как и у других программ.