2013-10-26 6 views
0

Я хочу, чтобы запустить эту команду с execvpзапустить команду с 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

ответ

3

Первый элемент argv массива, переданного в execvp (т.е. второй аргумент, переданный execvp) должно быть (так же, как с argv массив, переданный в main функции любой программы C) имя исполняемой программы, причем элемент после этого является первым аргументом командной строки. Таким образом, tab должно быть:

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

Спасибо, что сработало! –

+0

@rabahRachid: Если мой ответ решил вашу проблему, вы должны принять его, нажав галочку под стрелками голосования. – jwodder

+2

"char * tab = {" gcc "," file1.o "," file2.o "," file3.o ", 0};" не будет компилироваться. Вы имеете в виду «char * tab [] = {« gcc »,« file1.o »,« file2.o »,« file3.o », 0}; ? –

Смежные вопросы