1
我想做一個程序獲取目錄路徑,打開目錄,然後編譯內部的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文件將在主目錄中創建。
我試圖谷歌和研究之前,但無法找到兩個問題的答案。 感謝您的幫助。
對於#2:指定完整路徑,與輸入相同。對於#1,可能是一個環境問題('PATH')。關於#2的 – Mat 2013-03-23 10:29:19
:你是什麼意思?你能給個例子嗎?關於#1的 :我能做些什麼? – Jjang 2013-03-23 10:31:00
你對#2有什麼不瞭解?你在做什麼來源文件的路徑?你爲什麼不爲輸出做同樣的事情? – Mat 2013-03-23 10:32:38