Как я могу получить путь к Clang, когда Clang запускает компоновщик? - PullRequest
0 голосов
/ 23 апреля 2019

Я работаю с 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" сработали отлично.

1 Ответ

0 голосов
/ 21 мая 2019

Предложение @Ismail было идеальным. Сделал именно то, что хотел.

...