> Оба компонента взаимособираемы.тут есть один нюанс: сборка происходит уже собранным компилятором, а выполнение -- уже собранным интерпретатором.
поэтому пока они оба находятся в исходниках, собирать/выполнять придётся чем-то уже собранным заранее.
а оно является потенциальным источником закладок -- по исходному условию.
поэтому надо прочитать код интерпретатора и компилятора, собрать интерпретатор, дизассемблировать, полностью прочитать листинг и убедиться, что никакого вредного кода добавлено не было, затем прочитать код компилятора и собрать его силами интерпретатора.
причём всё это надо делать вручную, потому как доверять сторонним средствам и нейронным сетям нельзя -- они могут быть скомпрометированы.
но это всё-равно легче, чем прочитать весь код gcc или llvm/clang.