我正在使用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
。
我意识到-flto
以system()
作为运行命令调用/usr/bin/ld ...
。但是,如何获得clang
路径?由于我有clang
的多个版本,因此我不能使用whereis
等,因为它会返回错误的一个或多个。
LLVM中是否有全局变量,或者以某种方式查询LLVM,或者还没有发现为父进程获取映像路径的某种方式?
使用getppid和在“?/ proc // exe”中使用的建议效果很好。
答案 0 :(得分:0)
@Ismail的建议很完美。确实正是我想要的。