1. 问题
在使用llvm-gcc的时候,总是弹出如下出错:
llvm-gcc: error trying to exec 'cc1': execvp: No such file or directory
2. 解决过程
(1)刚开始,以为是没有cc1,所以到处找。发现linux的gcc目录有cc1,在/usr/lib/gcc/4.*.*/目录下;llvm-gcc的目录里面也有cc1,在libexec/子目录下。
(2)但是,cc1没有在path路径里面。于是试着将/usr/lib/gcc/4.*.*/目录添加到path路径。出现的错误是:emit-llvm-bc选项无法识别。现在问题越来越明显,应该是原有gcc中的cc1并不支持llvm特有选项;所以需要使得llvm-gcc访问自己的libexec目录下的cc1。但是,简单地将libexec目录下的cc1添加到path路径,容易搞乱二进制文件。更重要的是,llvm-gcc应该能找到自己专属的cc1的。
(3)因为刚开始调用llvm-gcc是通过将llvm-gcc放在path路径直接使用的,觉得可以看一下完整路径下使用是什么情况。结果,对了。就是说,使用完整路径运行llvm-gcc时,可以自动寻找libexec目录下的cc1;通过加入path路径的方法,简单地运行llvm-gcc,会寻找系统库目录中cc1.
3. 解决方案
在/bin目录下建立符号链接,而不是通过添加path路径,即可解决。
困惑的是,难道通过path路径,访问的cc1就变了;而符号链接没有变?