如果我理解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
编辑:使用gcc v4.2.4在Debian Lenny 64bit上进行测试
答案 0 :(得分:2)
与此同时,我发现了
行为的另一个原因gcc -print-prog-name=ld
gcc不会直接调用ld
命令。
gcc调用collect
。它是collect
,后者又调用ld。
答案 1 :(得分:0)
我认为-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是什么 - 否则
它只是回复你给它的东西而不将其解析为绝对路径名。