我正在尝试制作一个程序,该程序正在获取目录路径,打开目录,然后在其中编译 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.
- 有什么想法有什么问题吗?为什么它不能成功编译文件?请注意,我确实成功地通过终端手动编译它们。
- 另一个我没有找到答案的问题是,如何强制在 c 文件的目录中创建 comp.out 文件?因为如果我使用文件的完整路径调用 gcc,则会在主目录中创建 .out 文件。
我之前尝试过谷歌和研究,但找不到这两个问题的答案。感谢帮助。