gpt4 book ai didi

c - fork 一个 child 并调用 gcc

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:57:12 24 4
gpt4 key购买 nike

我正在尝试制作一个获取目录路径、打开目录然后编译其中的 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.
  1. 有什么问题吗?为什么它不能成功编译文件?请注意,我确实成功地通过终端手动编译了它们。
  2. 另一个我没有找到答案的问题是,如何强制在c 文件的目录中创建comp.out 文件?因为如果我使用文件的完整路径调用 gcc,将在主目录中创建 .out 文件。

我之前尝试过谷歌和研究,但找不到这两个问题的答案。感谢您的帮助。

最佳答案

你可以使用

execlp()

相反。它在 PATH 环境变量中搜索。

关于c - fork 一个 child 并调用 gcc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15585664/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com