1. 程式人生 > >gcc編譯器用法

gcc編譯器用法

span 常用 可執行 return reserve file char dir 輸入

一個用c語言寫的程序把他編譯成計算機可指行的文件,一般有4個步驟

/*================================================================
*   Copyright (C) 2018 . All rights reserved.
*   
*   文件名稱:helloworld.c
*   創 建 者:ghostwu(吳華)
*   描    述:gcc編譯器用法演示
*
================================================================*/

#include 
<stdio.h> #define HELLO "hello world!\n" int main(int argc, char *argv[]) { printf( HELLO ); return 0; }

1,預處理:這個步驟,主要是包含頭文件,展開宏定義

gcc -E helloworld.c -o helloworld.i

2,生成匯編代碼

gcc -S helloworld.i -o helloworld.s

3,編譯匯編

gcc -c helloworld.s -o helloworld.o

4,鏈接

gcc helloworld.o -o helloworld

通常寫完程序,我們用 gcc helloworld.c -o helloworld 直接完成以上四個步驟

gcc常用選項含義:

1. -o output_filename
確定可執行文件的名稱為output_filename。如果不給出這個選項,gcc就給出預設的可執行文件名a.out。

2. -c
只編譯,不鏈接成為可執行文件,編譯器只是由輸入的.c等源文件生成.o為後綴的目標文件。

3. -g
產生調試工具(gdb)所必要的符號信息,要想對編譯出的程序進行調試,就必須加入這個選項。

4. -ldirname
將dirname所指出的目錄加入到程序頭文件目錄列表中。

5. -Ldirname
將dirname所指出的目錄加入到庫文件的目錄列表中。

6. -Wall
生成所有警告信息。

gcc編譯多個模塊

helloworld.h

 1 ==============================================================
 2 *   Copyright (C) 2018 . All rights reserved.
 3 *   
 4 *   文件名稱:helloworld.h
 5 *   創 建 者:ghostwu(吳華)
 6 *   描    述:
 7 *
 8 ================================================================*/
 9 
10 #ifndef _HELLO_H_
11 #define _HELLO_H_
12 void say_hello( const char* name );
13 #endif

helloworld.c

/*================================================================
*   Copyright (C) 2018 . All rights reserved.
*   
*   文件名稱:helloworld.c
*   創 建 者:ghostwu(吳華)
*
================================================================*/

#include <stdio.h>
#include "helloworld.h"

void say_hello( const char* name ) {
    printf( "%s\n", name );
}

main.c

/*================================================================
*   Copyright (C) 2018 . All rights reserved.
*   
*   文件名稱:main.c
*   創 建 者:ghostwu(吳華)
*   描    述:
*
================================================================*/


#include "helloworld.h"

int main(int argc, char *argv[])
{
    say_hello( "hello ghostwu" );
    return 0;
}

編譯命令:

gcc helloworld.c main.c -o hello

gcc編譯器用法