Linux GCC的用法

/*
* hello.c
*/
#include<stdio.h> 
#include<stdlib.h> 

int main() 
{ 
	printf("Hello, World!\n"); 
	return 0; 
} 

使用如下命令編譯並測試這個代碼:

$ gcc -o hello hello.c
$ ./hello
Hello, World!
/* 
* message.c 
*/ 
#include <stdio.h> 

void goodbye_world(void) 
{ 
	printf("Goodbye, World!\n"); 
}

我們需要告訴GCC不要執行任何額外的連接操作,而是使用GNU彙編器將源文件轉換爲目標代碼後就結束  。使用GCC的“-c”標記來編譯支持庫代碼:

$ gcc -c message.c

這一過程的輸出結果是一個名爲message.o的文件,它包含適合連接到一個較大程序的已編譯目標代碼。

/** 
* main.c 
*/ 

#include <stdlib.h> 
void good_world(void); 

int main(int argc, char **argv) 
{ 
	goodbye_world(); 
	exit(0); 
}

使用GCC編譯這個包裹程序:

$ gcc -c main.c

現在你有了兩個目標文件:message.o和main.o。它們包含能夠被你的Linux工作站執行的目標代碼。要從這個目標代碼創建Linux可執行程序,你需要再一次調用GCC來執行連接階段的工作:

$ gcc -o goodbye message.o main.o

GCC認識目標代碼的.o後綴名,並知道應該如何爲你調用外部GNU連接器。記住GCC在默認情況下將把所有可執行文件命名爲a.out,所以你需要在命令行中指定可執行程序名。在成功將多個源文件編譯並連接進單個可執行文件後,你就可以以正常的方式來執行這個程序了。

$ ./goodbye
Goodbye, World!

GNU彙編器

$ gcc -S hello.c

GCC將把你的程序的彙編語言版本輸出到文件hello.s。

你可以使用GNU彙編器as來編譯源代碼hello.s,如下所示:

$ as -o hello.o hello.s

這將產生文件hello.o,它包含針對指定彙編語言源文件的可執行目標代碼。  


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章