他们的位置是硬编码为gcc代码还是gcc只是调用as,我们必须as在PATH变量中有位置?
在后一种情况下,我们如何创建两个完全独立的gcc工具链?我的意思是,我们怎样才能使gcc-A调用as-A和gcc-B调用as-B,如果as-A和as-B都称为as?
der*_*ert 12
一些路径(例如,to cc1)被编译.其他(例如as)在$ PATH中使用正常查找.这取决于GCC配置的选项.
你可以通过运行strace和grepping来轻松地说出来exec|stat.
$ strace -f gcc foo.c -o foo |& grep exec
?
[pid 24943] execve("/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.6.1/cc1", …
Run Code Online (Sandbox Code Playgroud)
这是通过编译路径调用cc1,正如您可以从缺乏查找中看到的那样.它也不在$ PATH中.
[pid 24944] execve("/home/anthony/bin/as", ["as", "--64", "-o", "/tmp/ccCIrcGi.o", "/tmp/ccbw3PkL.s"], [/* 51 vars */]) = -1 ENOENT (No such file or directory)
[pid 24944] execve("/usr/local/bin/as", ["as", "--64", "-o", "/tmp/ccCIrcGi.o", "/tmp/ccbw3PkL.s"], [/* 51 vars */]) = -1 ENOENT (No such file or directory)
[pid 24944] execve("/usr/bin/as", ["as", "--64", "-o", "/tmp/ccCIrcGi.o", "/tmp/ccbw3PkL.s"], [/* 51 vars */]) = 0
Run Code Online (Sandbox Code Playgroud)
那是在寻找as$ PATH.你可以说,因为它按顺序尝试$ PATH中的每个位置.
我省略了很多strace输出 - 即使只有stat和exec,它的几页长.
运行gcc -v将显示一些编译路径(作为配置行的一部分).
| 归档时间: |
|
| 查看次数: |
4558 次 |
| 最近记录: |