Я думаю, опция -print-prog-name применима только к небольшому набору инструментов, которые GCC
использует внутренне. Например,
$ gcc -print-prog-name=cc1
/usr/libexec/gcc/x86_64-redhat-linux/3.4.5/cc1
$ ls -L /usr/libexec/gcc/x86_64-redhat-linux/3.4.5/
cc1 cc1plus collect2 f771 jc1 jvgenmain
$ gcc -print-prog-name=f771
/usr/libexec/gcc/x86_64-redhat-linux/3.4.5/f771
Итак, gcc -print-prog-name
знает об инструментах, которые находятся в этом каталоге. Но:
$ gcc -print-prog-name=ld
ld
Я предполагаю, что если gcc -print-prog-name
возвращает абсолютный путь, он настроен
использовать эту версию программы, независимо от того, что на вашем $ PATH - в противном случае
он просто возвращает то, что вы дали, без разрешения абсолютного пути.