/*
* 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,它包含針對指定彙編語言源文件的可執行目標代碼。