gcc 常用引數

2021-07-10 17:34:13 字數 2084 閱讀 5465

當前目錄下有一hello.c

#include

int main()

獲得預處理以後的檔案 hello.i

gcc -e hello.c     //只執行預編譯,即處理所有#開頭的部分 如:

#include

#define x 5

-e只會輸出在控制台上,如果想要得到hello.i,用:

gcc -e hello.c > hello.i

# 1 "hello.c"

# 1 ""

# 1 "/usr/include/stdc-predef.h" 1 3 4

# 1 "" 2

# 1 "hello.c"

# 1 "/usr/include/stdio.h" 1 3 4

/*...省略一萬行...

*/extern

void funlockfile (file *__stream) __attribute__ ((__nothrow__ , __leaf__));

# 943 "/usr/include/stdio.h" 3 4

# 2 "hello.c" 2

int main()

獲得匯程式設計序 hello.s

gcc -s hello.s //直接獲得hello.s(裡面都是彙編指令 用編譯器開啟即可看到)
"hello.s"

.file

"hello.c"

.section

.rodata

.lc0:

.string

"hello world!!!"

.text

.globl main

.type main, @function

main:

.lfb0:

.cfi_startproc

pushq %rbp

.cfi_def_cfa_offset 16

.cfi_offset 6, -16

movq %rsp, %rbp

.cfi_def_cfa_register 6

movl $.lc0, %edi

movl $0, %eax

call printf

movl $0, %eax

popq %rbp

.cfi_def_cfa 7, 8

ret.cfi_endproc

.lfe0:

.size main, .-main

.ident

"gcc: (ubuntu 4.8.2-19ubuntu1) 4.8.2"

.section

.note

.gnu-stack,"",@progbits

獲得可重定位目標檔案 hello.o

gcc -c hello.c //二進位制**,做聯結器試調可以用,普通人無法讀懂
獲得可執行目標程式 a.out

gcc hello.c  可以直接執行
c大致可以分為兩個常用版本 c90和c99

其中c90和ansi c是一樣的

用c90標準編譯

gcc -std=c89 hello.c //或者

gcc -ansi hello.c

用c99標準編譯

gcc -std=c99 hello.c
p.s.

gcc -o1 -o exe hello.c //-o1:一級編譯優化(同理-o2就是二級優化) 等級越高得出彙編**效率越高

//-o name : 輸出程式的名字 而不再叫a.out

gcc常用引數

gcc的一些重要引數 1.i 指定標頭檔案搜尋路徑 i 表include 如 gcc c hello.c o hello.o i usr include 2.l 指定要連線的庫所在的目錄 l 指定要連線的庫的名字 如 gcc main.o l usr lib lqt o hello 3.d 定義巨集...

gcc常用引數

今晚看了些有關gcc的編譯選項的內容,記錄下來以備查用。1 gcc c 只編譯不鏈結,生成.o檔案。例如,gcc c hello.c,將由hello.c得到hello.o 2 gcc o直接得到可執行檔案,並且可以指定可執行檔的名稱。例如,gcc o hello hello.c,將由hello.c得...

gcc常用引數

o file 指定輸出檔名,在編譯為目標 時,這一選項不是必須的。如果file沒有指定,預設檔名是a.out.c 只編譯不鏈結 dfoo bar 在命令列定義預處理巨集foo,其值為bar idirname 將dirname加入到頭檔案的搜尋目錄列表中 ldirname 將dirname加入到庫檔案...