編譯選項
---------IDE掩蓋下的天空
/***************************************
* gcc for c language
***************************************/
Single Source to Executable
$ gcc helloworld.c [-o howdy]
預設產生的名字a.exe
______________________________________
Source File to Object File
$ gcc -c helloworld.c [-o harumph.o]
預設產生的名字與原檔案名稱一致,尾碼為.o
-c告知不但保留object檔案,而且忽略串連過程
______________________________________
Multiple Source Files to Executable
$ gcc hellomain.c sayhello.c -o hello
______________________________________
Preprocessing
$ gcc -E helloworld.c [-o helloworld.i]
預設不輸出檔案,若輸出則為.i檔案
-E把宏展開後的代碼情況
____________________________________
Generating Assembly Language
$ gcc -S helloworld.c
-S產生hellowordl.s組合語言檔案
____________________________________
Creating a Static Library
1、產生.o檔案
$ gcc -c hellofirst.c hellosecond.c
2、產生.a檔案
$ ar -r libhello.a hellofirst.o hellosecond.o
注意靜態庫的命名規則
3、串連
$ gcc twohellos.c libhello.a -o twohellos
____________________________________
Creating a Shared Library
1、產生.o檔案
$ gcc -c -fpic shellofirst.c shellosecond.c
-fpic 使得.o輸出模組以地址可定向的方式產生。[pic:position independent code]
2、產生.so
$ gcc -shared shellofirst.o shellosecond.o -o hello.so
3、串連
$ gcc stwohellos.c hello.so -o stwohellos
注意:1、2可以合并為
$ gcc -fpic -shared shellofirst.c shellosecond.c -o hello.so
_____________________________________
Overriding the Naming Convention
$ gcc -xc helloworld.jxj -o helloworld
-xc對於C語言的原始碼,預設尾碼為.c,但別的尾碼檔案也可以當作c來用,那就要加-x選項
_______________________________________
Create a header file
$ gcc sayhello.c -aux-info sayhello.h
$ gcc *.c -aux-info prototypes.h
不過這樣產生的標頭檔,包含的函數原型太多,除了使用者自訂的函數外,標準庫中的函數原型都列出來了