制作一个C程序进行编译另一 [英] Making a C program to compile another

查看:168
本文介绍了制作一个C程序进行编译另一的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我希望做一个程序编译另一个目的。
其目的是使用exec来运行gcc。
我必须使用execve的和我有什么是:

 的#include<&unistd.h中GT;
#包括LT&; SYS / types.h中>INT主(INT ARGC,CHAR *的argv []的char * envp [])
{
  的argv [0] =海湾合作委员会;
  execve的(的/ usr / bin中/海湾合作委员会,argv的,envp);
  返回0;
}

这样做

 的gcc -Wall -o p3p4.c运行

它编译没有问题,但这样做的时候

  ./运行p3p1.c

要尝试编译另外一个,这种情况发生:

 运行:错误尝试执行CC1':execvp:没有这样的文件或目录

编辑:

诚如,增加线的时候:

 的argv [0] =海湾合作委员会;

在程序管理工作。
谢谢你的投入。


解决方案

尝试设置的argv [0] 像一个乖巧的程序:

 的argv [0] =海湾合作委员会;
execve的(的/ usr / bin中/海湾合作委员会,argv的,envp);


  

运行:错误尝试执行CC1


这显然是什么GCC尝试当它发现一些意想不到的 ARGV运行[0]

I'm looking to make a program with the purpose of compiling another. The purpose being using exec to run gcc. I have to use execve and what I have is:

#include <unistd.h>
#include <sys/types.h>

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

By doing

gcc -Wall p3p4.c -o run

It compiles without problems, but when doing

./run p3p1.c

To try and compile another one, this happens:

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

EDIT:

As advised, when adding the line:

argv[0] = "gcc";

The program manages to work. Thank you for the input.

解决方案

Try setting argv[0] like a well-behaved program:

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

run: error trying to exec 'cc1':

This is apparently what gcc tries to run when it finds something unexpected in argv[0].

这篇关于制作一个C程序进行编译另一的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆