Linux gcc命令的具體使用

2022-09-26 13:45:12 字數 3869 閱讀 7058

01. 命令概述

gcc命令使用gnu推出的基於c/c++的編譯器,是開放源**領域應用最廣泛的編譯器,具有功能強大,編譯**支援效能優化等特點。

gcc是gnu編譯器套件(gnu compiler collection),它包括了c、c++、objective-c、fortran、j**a、ada、go語言和d語言的前端,也包括了這些語言的庫(如libstdc++、libgcj等等)。gcc的初衷是為gnu作業系統專門編寫的一款編譯器。gnu系統是徹底的自由軟體。此處,「自由」的含義是它尊重使用者的自由。

02. 命令格式

用法:gcc [選項] 檔案...

03. 常用選項

-pass-exit-codes 在某一階段退出時返回最高的錯誤碼

--help 顯示此幫助說明

--xr**eidufptarget-help 顯示目標機器特定的命令列選項

--help=}[,...]

顯示特定型別的命令列選項

(使用『-v --help'顯示子程序的命令列引數)

--version 顯示編譯器版本資訊

-dumpspecs 顯示所有內建 spec 字串

-dumpversion 顯示編譯器的版本號

-dumpmachine 顯示編譯器的目標處理器

-print-search-dirs 顯示編譯器的搜尋路徑

-print-libgcc-file-name 顯示編譯器伴隨庫的名稱

-print-file-name=庫》 顯示 庫》 的完整路徑

-print-prog-name=程式》 顯示編譯器元件 程式》 的完整路徑

-print-multiarch 程式設計客棧 display the target's normalized gnu triplet, used as

a component in the library path

-print-multi-directory 顯示不同版本 libgcc 的根目錄

-print-multi-lib 顯示命令列選項和多個版本庫搜尋路徑間的對映

-print-multi-os-directory 顯示作業系統庫的相對路徑

-print-sysroot 顯示目標庫目錄

-print-sysroot-headers-suffix 顯示用於尋找標頭檔案的 sysroot 字尾

-wa,選項》 將逗號分隔的 選項》 傳遞給彙編器

-wp,選項》 將逗號分隔的 選項》 傳遞給預處理器

-wl,選項》 將逗號分隔的 選項》 傳遞給鏈結器

-xassembler 引數》 將 引數》 傳遞給彙編器

-xpreprocessor 引數》 將 引數》 傳遞給預處理器

-xlinker 引數》 將 引數》 傳遞給鏈結器

-s**e-temps 不刪除中間檔案

-s**e-temps= 不刪除中間檔案

-no-canonical-prefixes 生成其他 gcc 元件的相對路徑時不生成規範化的

字首-pipe 使用管道代替臨時檔案

-time 為每個子程序計時

-specs=檔案》 用 檔案》 的內容覆蓋內建的 specs 檔案

-std=標準》 指定輸入原始檔遵循的標準

--sysroot=目錄》 將 目錄》 作為標頭檔案和庫檔案的根目錄

-b 《程式設計客棧; 將 目錄》 新增到編譯器的搜尋路徑中

-v 顯示編譯器呼叫的程式

-### 與 -v 類似,但選項被引號括住,並且不執行命令

-e 僅作預處理,不進行編譯、彙編和鏈結

-s 編譯到組合語言,不進行彙編和鏈結

-c 編譯、彙編到目標**,不進行鏈結

-o 檔案》 輸出到 檔案》

-pie create a position independent executable

-shared create a shared library

-x 語言》 指定其後輸入檔案的語言

允許的語言包括:c c++ assembler none

『none'意味著恢復預設行為,即根據檔案的副檔名猜測

原始檔的語言

04. 參考示例

4.1 生成預設的可執行檔案

[deng@localhost bak]$ gcc test.c

[deng@localhost bak]$

將test.c預處理、彙編、編譯並鏈結形成可執行檔案。這裡未指定輸出檔案,預設輸出為a.out。

4.2 指定輸出檔案

[deng@localhost bak]$ gcc test.c -o test

[deng@localhost bak]$ ls

5th 6th 7th 8th 9th test test.c

[deng@localhost bak]$

將test.c預處理、彙編、編譯並鏈結形成可執行檔案test。-o選項用來指定輸出檔案的檔名。

4.3 僅作預處理,不進行編譯、彙編和鏈結

[deng@localhost bak]$ gcc -e test.c -o test.i

[deng@localhost bak]$

將test.c預處理輸出test.i檔案。

4.4 編譯到組合語言,不進行彙編和鏈結

[deng@localhost bak]$ gcc -s test.c -o test.s

[deng@localhost bak]$ ls

5th 6th 7th 8th 9th test test.c test.i test.s

[deng@localhost bak]$

將預處理輸出檔案test.i彙編成test.s檔案。

4.5 編譯、彙編到目標**,不進行鏈結

[deng@localhost bak]$ gcc -c test.c -o test.o

[deng@localhost bak]$ ls

5th 6th 7th 8th 9th test test.c test.i test.o test.s

[deng@localhost bak]$

4.6 將目標**生成可執行檔案

[deng@locxr**eidufpalhost bak]$ gcc test.o -o test

[deng@localhost bak]$

將編譯輸出檔案test.o鏈結成最終可執行檔案test。

4.7 編譯時指定優化級別

[deng@localhost bak]$ gcc -o1 test.c -o test

[deng@localhost bak]$

使用編譯優化級別1編譯程式。級別為1~3,級別越大優化效果越好,但編譯時間越長。

4.8 多檔案編譯

[deng@localhost bak]$ gcc testfun.c test.c -o test

[deng@localhost bak]$

將testfun.c和test.c分別編譯後鏈結成test可執行檔案。

4.9 多檔案編譯方法二

[deng@localhost bak]$ gcc -c test.c

[deng@localhost bak]$ gcc -c testfun.c

[deng@localhost bak]$ gcc test.o testf程式設計客棧un.o -o test

[deng@localhost bak]$

Linux ln命令具體解釋及使用

linux ln命令具體解釋及使用 ln是linux中乙個很重要命令,它的功能是為某乙個檔案在另外乙個位置建立乙個不同的鏈結,這個命令最經常使用的引數是 s,詳細使用方法是 ln s 原始檔 目標檔案。當我們須要在不同的資料夾,用到同樣的檔案時,我們不須要在每個須要的資料夾下都放乙個必須同樣的檔案,...

pyltp python具體使用

import re from pyltp import namedentityrecognizer from pyltp import sementicrolelabeller from pyltp import parser from pyltp import postaggerdef ltp s...

shell cut命令具體應用

cut命令 cut命令用於從檔案或者標準輸入中讀取內容並擷取每一行的特定部分並送到標準輸出。擷取的方式有三種 一是按照字元位置,二是按照位元組位置,三是使用乙個分隔符將一行分割成多個field,並提取指定的fields。cut命令有5個引數,其中 c,b,f分別表示 character byte 以...