2009-11-14 109 views
2

從命令行獲取我必須使用gcc編譯的文件名。可以這樣說。使用gcc在另一個程序中編譯程序

./a.out fileToBeCompiled.c 

那麼我怎麼能編譯使用我的計劃之內的gcc這個文件?可以說main.a正在爲其生成。

+0

沒有脫殼:http://programmers.stackexchange.com/questions/189949/is-there-a-way-to-use-gcc-as-a-library – 2016-07-02 09:40:00

回答

2

您可以隨時調用gcc從程序中的shell執行命令進行編譯。從你程序中

Reference to the system function.

+0

謝謝,它爲我工作。 – itsaboutcode 2009-11-14 20:15:25

+0

使用系統是一個壞主意,但如果它適用於它的代碼,那對我應該沒問題 – 2009-11-14 20:20:26

4

只是EXEC GCC。

int main(int argc, char** argv) 
{ 
    execv("/usr/bin/gcc", argv); 
} 
1

瞭解如何調用fork()exec()wait()。你可能想用execv()來達到這個目的。

0
./a.out fileToBeCompiled.c && gcc fileToBeCompiled.c 

如果./a.out失敗(這則返回0以外的東西),GCC將不會被調用

0

簡單,你可以使用功能「系統」(內stdio.h中定義)來執行UNIX命令在c,C++程序裏面。

例如:我要編譯sub.c裏面的main.c

void main(void) 
{ 
    system("cc sub.c -o sub"); 
} 

您可以指定動態輸入和輸出文件。

相關問題