我想用execvp运行这个命令

gcc file1.o file2.o file3.o

我创建了一个包含以下内容的选项卡:
char * tab = {"file1.o", "file2.o", "file3.o", NULL };

当我这样叫execvp时:
 execvp("gcc",tab);

我有这个错误:
file1.o: erreur fatale: -fuse-linker-plugin, but liblto_plugin.so not found

当我使用以下命令编译文件时:
gcc file1.o file2.o file3.o

没问题。
注意,我的程序不是我写的那样简单。有关完整的代码,请访问http://pastebin.com/zQ8pwmZd

最佳答案

传递给argvexecvp数组的第一个元素(即传递给execvp的第二个参数)应该是(就像传递给任何C程序的argv函数的main数组一样)正在执行的程序的名称,后面的元素是第一个命令行参数。因此,tab应该是:

char * tab[] = {"gcc", "file1.o", "file2.o", "file3.o", NULL };

关于c - 在C程序中使用execvp运行命令,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19612695/

10-12 01:03