我正在尝试创建一个获取目录路径的程序,打开目录然后编译内部的c文件。
//open current directory
currDir=opendir(fullpath);
//get the c file, ignore hidden files
while((cfile=readdir(currDir))!=NULL)
{
if(cfile->d_name[0]!='.')
break;
}
/*compile c file*/
//child process
if((pid=fork())==0)
{
fullpath=realloc(fullpath, sizeof(char)*(strlen(fullpath)+strlen(cfile->d_name)+1));
strcat(fullpath,cfile->d_name);
execl("/usr/bin/gcc", "/usr/bin/gcc", "-o", "comp.out", fullpath,NULL);
}
else
{
wait(NULL);
}
如您所见,在子进程中我正在创建c文件的完整路径(否则它将找不到它),然后调用gcc,但是我收到以下错误:
collect2: fatal error: cannot find 'ld'
compilation terminated.
我之前尝试过google和研究,但无法找到这两个问题的答案。 谢谢你的帮助。
答案 0 :(得分:3)
您可以使用
execlp()
代替。它在PATH环境变量中搜索。