Написать полностью прозрачную оболочку C / C ++ для программы, которую нельзя переименовать - PullRequest
0 голосов
/ 28 апреля 2019

Мне нужно написать оболочку для готового Clang AOSP, чтобы он что-то делал, когда Clang вызывается сценарием сборки AOSP. Цель состоит в том, чтобы переименовать Clang, например. clang.original, и создайте оболочку C / C ++, которая вызывает clang.original, затем поместите ее в папку набора инструментов AOSP clang и назовите ее clang. Чтобы узнать, как создать оболочку, обратитесь: Как написать программу-оболочку в Linux, которая будет полностью прозрачной

Но я обнаружил, что клан в AOSP разработан так, как будто вы переименуете его, он больше не будет работать.

Есть ли способ сделать обертку для программ, которые нельзя переименовать?

Или, по крайней мере, есть способ обойти готовый лязг?

Для справки:

Размер предварительно собранного лязга составляет всего 6.4 КБ, есть 60 МБ clang-6.0. Так что сам этот лязг является оберткой настоящего clang-6.0. Сценарий сборки вызовет clang. Я переименую Clang в Clang.original. Даже если вы запускаете напрямую "./clang.original" в bash, возникает ошибка:

Traceback(most recent call last) :
File "./clang.original", line 174, in <module>
main(sys.argv)
File "./clang.original", line 170, in main
cw.invoke_compiler()
File "./clang.original", line 144, in invoke_compiler
os.execv(self.argv0, self.execargs)
OSError: [Errno 2] No such file or directory
...