2013-05-13 44 views
0

我試圖寫一個shell命令來查找和編譯所有的C程序我試圖寫一個shell命令來查找和編譯所有的C程序

find . -type f -name '*.c' -exec sh -c 'gcc {} -o $(dirname {})/$(basename {} .c)' \; 

就是我現在擁有的,它實際上編譯所有的C文件,但它也返回這些錯誤。

/usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../lib64/crt1.o: In function `_start': 
(.text+0x20): undefined reference to `main' 
collect2: error: ld returned 1 exit status 

我完全卡住了,任何幫助將非常感激。

+1

也許這些.c文件中的一些沒有main(),所以結果並不太令人意外,因爲您正在嘗試將每個文件編譯並鏈接到可執行文件中。 – 2013-05-13 08:51:59

+0

顯示你的文件的include部分,也許這裏有一些依賴的錯誤。 – prehistoricpenguin 2013-05-13 08:53:19

+1

除非您知道每個.c文件都是自包含的可執行文件,否則這樣做沒有任何意義。一些帶有源文件的目錄可能使用'Makefile'或'configure'腳本。你真的想要解決什麼問題? – 2013-05-13 08:58:29

回答

0

您可能沒有爲您的C文件/文件定義主。當您嘗試爲每個C文件創建單獨的可執行文件時,請檢查您的個人內容。你可能想要顯示你編譯的文件的#include。

+0

這就是問題,你絕對是對的!非常感謝你的幫助! – Gafboon 2013-05-13 09:06:14

相關問題