Создание программы C для компиляции другой

Я ищу сделать программу с целью компиляции другой. objective использования exec для запуска gcc. Я должен использовать execve, и у меня есть:

#include  #include  int main(int argc, char* argv[], char* envp[]) { argv[0] = "gcc"; execve("/usr/bin/gcc" , argv, envp); return 0; } 

При выполнении

 gcc -Wall p3p4.c -o run 

Он компилируется без проблем, но при выполнении

 ./run p3p1.c 

Чтобы попытаться скомпилировать другой, это происходит:

 run: error trying to exec 'cc1': execvp: No such file or directory 

РЕДАКТИРОВАТЬ:

Как уже было сказано, при добавлении строки:

 argv[0] = "gcc"; 

Программе удается работать. Спасибо за вход.

Попробуйте установить argv[0] как хорошо управляемую программу:

 argv[0] = "gcc"; execve("/usr/bin/gcc" , argv, envp); 

run: ошибка, пытающаяся выполнить exec ‘cc1’:

Это, по-видимому, то, что gcc пытается запустить, когда обнаруживает что-то неожиданное в argv[0] .

вы знаете, что он не нашел gcc . Пытаться

 execvpe ("gcc", argv, envp); 

Обратите внимание: здесь envp бесполезен (а не POSIX); вы можете безопасно удалить envp из main() и вызвать

 execvp ("gcc", argv);