当clang运行链接器时,如何获得clang的路径?

时间:2019-04-22 21:50:28

标签: llvm llvm-clang

我正在使用LLVM 8.0和clang,并且在优化过程中正在执行一些工作,因此需要获取通往clang的路径。我正在使用-flto标志运行clang,因此clang实际上会调用链接器,并最终调用我的代码。我正在Ubuntu 16.04上执行此操作。

我正在尝试使用readlink("/proc/self/exe");获取图像路径。 clang映像是在我的主文件夹中构建的,因此我指定运行clang的路径为/home/users/me/llvm/build/llvm/bin/clang。我还在/usr/bin/clang中安装了一个clang版本。

从打给readlink的电话中得到的是:/usr/bin/ld。 我想要得到的是:/home/users/me/llvm/bin/clang

我意识到-fltosystem()作为运行命令调用/usr/bin/ld ...。但是,如何获得clang路径?由于我有clang的多个版本,因此我不能使用whereis等,因为它会返回错误的一个或多个。

LLVM中是否有全局变量,或者以某种方式查询LLVM,或者还没有发现为父进程获取映像路径的某种方式?


使用getppid和在“?/ proc // exe”中使用的建议效果很好。

1 个答案:

答案 0 :(得分:0)

@Ismail的建议很完美。确实正是我想要的。