Я работаю с LLVM 8.0 и clang и выполняю некоторую работу во время оптимизации, и мне нужно найти путь к clang. Я запускаю clang, используя флаг -flto
, так что clang фактически вызывает компоновщик и, в конечном счете, мой код. Я делаю это на Ubuntu 16.04.
Я пытаюсь получить путь к изображению, используя readlink("/proc/self/exe");
. Образ clang был собран в моей домашней папке, поэтому путь для запуска clang - /home/users/me/llvm/build/llvm/bin/clang
. У меня также установлена версия clang в /usr/bin/clang
.
Что я получаю от звонка на readlink
: /usr/bin/ld
.
То, что я хочу получить: /home/users/me/llvm/bin/clang
.
Я понимаю, что -flto
вызывает system()
с /usr/bin/ld ...
в качестве команды для запуска. Но как я могу получить путь clang
? Поскольку у меня есть несколько версий clang
, я не могу использовать whereis
или тому подобное, так как он вернет либо неправильную, либо несколько.
Существует ли глобальная переменная в LLVM, или какой-то способ запроса LLVM, или каким-то образом, который я еще не обнаружил, чтобы получить путь к изображению для родительского процесса?
Предложения по использованию getppid и использованию в "? / Proc // exe" сработали отлично.