当 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 的建议很完美。完全符合我的要求。
我正在使用 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
.
我从 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 的建议很完美。完全符合我的要求。