gcc -print-prog-name = ??? не работает, как я ожидал - PullRequest
2 голосов
/ 31 января 2010

если я правильно понимаю руководства gcc, тогда опция -print-prog-name должна напечатать название используемой программы.

Но, похоже, эта опция повторяет только данный аргумент

Примеры:

gcc -print-prog-name=ld
--> ld

gcc -print-prog-name=xxxsome-funny-name
--> xxxsome-funny-name

Это ожидаемое поведение? Я думаю, что это должно напечатать что-то вроде

gcc -print-prog-name=ld
--> /usr/bin/ld

gcc -print-prog-name=xxxsome-funny-name
--> unknown program

EDIT: тестирование на Debian Lenny 64bit с gcc v4.2.4

Ответы [ 2 ]

2 голосов
/ 01 февраля 2010

Тем временем я нашел другую причину поведения

gcc -print-prog-name=ld

Команда ld не вызывается напрямую gcc.

gcc вызывает collect. И это collect, что в свою очередь вызывает ld.

0 голосов
/ 31 января 2010

Я думаю, опция -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 - в противном случае он просто возвращает то, что вы дали, без разрешения абсолютного пути.

...