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

How can I get the path to clang when clang runs the linker?

我正在使用 LLVM 8.0 和 clang 并在优化期间执行一些工作,我需要获取 clang 的路径。我正在 运行ning clang 使用 -flto 标志,这样 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.

我意识到 -flto 使用 /usr/bin/ld ... 调用 system() 作为对 运行 的命令。但是我怎样才能得到 clang 路径呢?因为我有多个版本的 clang,所以我不能使用 whereis 之类的,因为它会 return 错误的一个或多个。

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


使用 getppid 和在“?/proc//exe”中使用的建议非常有效。

@Ismail 的建议很完美。完全符合我的要求。