我在編譯一個有main.c和很多.c和.h文件的程序。 有什麼辦法來編譯和鏈接沒有通過所有.c文件在海灣合作委員會的命令 像用gcc編譯.c
gcc main.c file.c file2.c -o main
我在編譯一個有main.c和很多.c和.h文件的程序。 有什麼辦法來編譯和鏈接沒有通過所有.c文件在海灣合作委員會的命令 像用gcc編譯.c
gcc main.c file.c file2.c -o main
如果您詢問命令行,可以使用通配符將所有.c文件指定爲@Man of One Way建議的文件。但是一般來說,任何平凡大小的C應用程序都是使用「makefile」構建的,它們對非常有幫助。
您可能需要閱讀教程,如http://www.cs.umd.edu/class/fall2002/cmsc214/Tutorial/makefile.html
「使」是構建C應用程序的工具。以下是你好世界版本。
$ cat main.c
#include <stdio.h>
int main (char *argv[], int argc) {
printf("Hello World\n");
return 0;
}
$ make main
cc main.c -o main
$ ./main
Hello World
編輯在尊重沙巴茲·評論: 原來的問題正在努力簡化命令行的GCC。程序員的正確方向是瞭解make。由於make有一點點的學習曲線,我想提供一些簡單的墊腳石來做一些有用的事情。通過這種方式開始,您不需要make文件。只需鍵入'make programname',如上所示。使用它的默認規則和關聯的varabiles。 $(CC)-c $(CFLAGS)$(CPPFLAGS)聰明的程序員可以通過設置衆所周知的變量建立在此。
從這裏可以用一個makefile鼓搗。在墊腳石的精神,考慮這個繁瑣的makefile
$ cat makefile
SRCS = main.c
OBJ = ${SRCS:.c=.o}
CC=gcc
main: ${OBJ}
$ make
gcc main.o -o main
通過設置衆所周知make變量CC來控制使用哪種編譯器。 OBJ是從源文件列表中計算出來的。中產階級的目標是通向規則之路。
不管怎麼說,所以我希望這個職位和其他答案獲得方式有原來的提問。
問候, -JK
hello world版本不應該關注'Makefile'的內容而不是程序? – Shahbaz 2012-07-08 21:54:54
前面已經說了,提出的是去 瞭解你需要在每一點上
除了剛纔什麼是最好的方式,它也使用一些標誌,這將幫助是非常重要的你出去而編碼:
-Wall -> sets all warning flags
-g, -ggdb -> generates debug code
-ansi, -std=c99
一個真正好的書介紹如何使用化妝是, http://shop.oreilly.com/product/9780937175903.do
學習如何編寫'Makefile',你不會後悔的。 – Shahbaz 2012-07-08 21:54:07