1. 程式人生 > >gcc 常用命令和引數

gcc 常用命令和引數

.h           //C/C++標頭檔案

.c           //C的原始檔

.cc         //C++ 的原始檔

.cpp      //C++ 的原始檔

.cxx       //C++ 的原始檔

.i           //gcc 編譯的過程檔案 使用 -save-temps 即可以保留過編譯過程檔案,用於分析編譯過程

.s         //彙編檔案,gcc 編譯的過程檔案 使用 -save-temps 即可以保留過編譯過程檔案,用於分析編譯過程

.a         //LINUX 下的靜態檔案在WINDOWS下為".lib"

.o         //.obj檔案 多個時,連線順序從左到右搜尋,gcc對同類型的檔案連線時不區分順序,GCC在連線時不同型別,需要區分順序,遵守從左到右的順序。
.so      //share object ,動態庫檔案,在WINDOW下為"DLL"

檔案編譯順序:

.c檔案編譯產生對應的.o檔案,.o檔案可以產生.a或.so檔案。

eg:

     gcc   -c    xxx.c  //產生xxx.o

    對ar命令可以產生.a檔案

    ar cr libxxx.a xxx.o

    如果有多個.o來生成.a可以在後面空格隔開追回更多檔案。

    ar t libname.a 

   檢視有多少個.o來生成的.a檔案

    gcc  -shared -fpic xxx.o yyyy.o -o  liblastfile.so

GCC編譯時警告開關

        -Wall  //是警告的集合,詳細包括:

              -Wcomment(註釋是否巢狀) 

              -Wformat(printf,scanf格式)

              -Wunused(沒有使用的變數)

              -Wimplicit(沒有實現)

              -Wreturn-type(沒有返回值)

     eg:

          gcc -Wall -c  xxx.c


       -o   (小寫)//output  指定輸出檔名。

      eg:

          gcc   -Wall -c xxx.c  -o yyy

      -v    (小寫)//Verbose   列印詳細編譯資訊

       eg:

           gcc -v -Wall hello.c  
     

       -save-temps  把編譯歷史儲存下來,供分析,產生.i,.s檔案

      eg:

            gcc   -Wall  -save-temps xxxx.c

       -I    //用於連線標頭檔案路徑 讀"哎"

       eg:

             gcc  -Wall xxx.c  -Iinclude -Llib //在xxx.c目錄下有一個include放有xxx.h標頭檔案,在lib資料夾下放庫檔案如.a

       -L   //(連線庫路徑) 用於對指定的路庫路徑進行搜尋 最常見的是 "-L."其中的"."表示在當前目錄

       eg:

            gcc -Wall xxx.c  -Iinclude -Llib

       -l    //連結link 用於對庫檔案的連結,常見的庫為libNAME.a 或libNAME.so,用於連線時,-lNAME

       eg:

           gcc  xxx.o  -lm  -o out

     -D 定義或使用巨集-DNAME  或 -DNAME=VALUE

       eg:

           如原始檔中用到一個巨集為DF,但又沒有宣告哪麼在使用的時候如果沒有指定巨集就會報錯哪麼可以使用這個-D來進行編譯時宣告

          gcc  -Wall -c  -DDF xxx.c 或gcc -Wall -c -DDF="abc" xxxx.c

       -E  檢視預處理過程

      -O 優化開關 級別有0-3

         eg:

              gcc -Wall -c -O2 xxx.c

      更多命令檢視gcc   --help

其它Linux指令:

Bash shell的命令列互動中可以輸入很多命令執行。例如:

命令

說明

命令

說明

touch

新建檔案

cmd

切換到windows控制檯,可以執行windows程式

rm

刪除檔案

--help

引數,顯示命令幫助

mkdir

新建目錄

man

顯示命令幫助

rmdir

刪除目錄

info

顯示命令更詳細幫助

ls

顯示檔案和目錄

ps

顯示程序

cd

改當前目錄 cd /

echo

輸出變數值,echo $PATH

cp

複製檔案

find

查詢檔案

mv

移動檔案

diff

比較檔案差異

檢視命令幫助文件時,按 Ctrl+Z Ctrl+C 退出命令

cat  指令:用於檢視檔案

eg:

      cat   -n  xxx.c  其中-n 用來顯示行號

ldd 指令:用於檢視可執行檔案有哪些動態庫依賴。

eg:

    ldd   xxxx

which  指令:用於檢視指令本身所在庫的目錄

eg:

    which gcc

    顯示  /usr/bin/gcc

ll指令:列出檔案列表

eg:

    ll /usr/lib/*.a 列出檔案

pwd: 顯示當前所在目錄

當出現亂碼時可以指定顯示的語言

export LANG = C

evn 指令:顯示當前使用者的環境變數

eg:

     evn | grep LIB  //檢視LIB開頭的環境變數

su指令:

su 就是換到超級管理員操作

su- 就是指定切換到某個使用者

cpp 指令:

cpp -dM   /dev/null 檢視巨集

cpp 預處理

time 指令: 檢視執行時間

eg:

       time  xxxx 其中xxxx為可執行程式名


GCC 編譯時連線第三方標頭檔案或庫檔案時指定搜尋路徑

經常在編譯時產生ld:cannot fine xxx。或沒有找到檔案,大多情況下是因為沒有正確找到庫或標頭檔案所致。

一、系統默路徑搜尋法。

//系統預設標頭檔案
/usr/local/include/
/usr/include/

系統預設庫檔案
/usr/local/lib/
/usr/lib/

上面這幾個是安裝好之後預設的標頭檔案和庫檔案路徑。裡面放的是系統需要的標頭檔案和庫檔案,如果我們使用第三方庫時,也所以把第三方的庫檔案和標頭檔案考過來,但這樣做,日積月累就會有很多第三方的垃圾庫。為了保證乾淨,使用環境變數和-I及-L引數進行動態設定。

二、環境變數法。

環境變數:可以檢視(.bash_profile檔案)

下面幾個是常使用的命名環境變數(當然可以按個人習慣來命名)
C_INCLUDE_PATH
CPLUS_INCLUDE_PATH
LIBRARY_PATH
LD_LIBRARY_PATH

可以設定多個環境變數,每個環境變數之間用“:”號隔開,如:

export  DIR1:DIR2:...

注意在指定環境變數時,儘量以追回的方式,以免覆蓋了別人的值。

eg:

export LIBRARY_PATH=/home/xxx    //不推薦,因為這樣有可能把這個變數從些就設定為/home/xxx

export LIBRARY_PATH=/home/xxx:$LIBRARY_PATH   //推薦,因為這樣可以在原有值的基礎上進行新增。

三、使用-I(大寫的哎)和-L    

     -I表示include的第一個字母,即搜尋標頭檔案(通常標頭檔案都是include的,所以放在include資料夾下)

     -L即(library)的第一個字母,即查詢庫檔案,後面跟的是庫的路徑。

最後,GCC可以編譯C/C++檔案,但如果是C++的請使用G++進行編譯,另外,不要用GCC編譯用G++進行檔案的連結,或G++編譯使用GCC進行檔案的連結,因為連結時找的執行時庫不一樣,所以很多情況下,找不到相應的庫的標頭檔案。

相關推薦

gcc 常用命令引數

.h           //C/C++標頭檔案 .c           //C的原始檔 .cc         //C++ 的原始檔 .cpp      //C++ 的原始檔 .cxx       //C++ 的原始檔 .i           //gcc 編譯的過程檔

Linux系統GCC常用命令GCC編譯過程描述

前言: GCC 原名為 GNU C 語言編譯器(GNU C Compiler),因為它原本只能處理 C語言。GCC 很快地擴充套件,變得可處理 C++。後來又 擴充套件能夠支援更多程式語言,如Fortran、Pascal、Objective-C、Java、Ada、Go以及各類處理器架構上的組合語言等,所以改

Docker Windows下安裝的一些注意以及常用命令引數

Windows下的安裝注意: 選擇完整安裝,其中MSYS-git UNIX tools是在Windows下執行Linux命令的工具 選擇Reboot Windows at end of ins

大資料(二十七):Sqoop常用命令公用引數

一、常用命令列舉 命令 類 說明 import ImportTool 將資料匯入到叢集 export ExportTool

Linux新增或者刪除使用者使用者組時常用的一些命令引數

1、建使用者: 檢視:ls /home useradd  xiongda                              passwd   xiongda                           2、建工作組 groupadd xiongchumo                    

Linux GCC常用命令gcc 編譯器常用命令引數一覽

轉載自:http://www.cnblogs.com/sunyubo/archive/2011/09/06/2282054.html 這些常用的 gcc/g++ 命令列引數,你都知道麼? 1. gcc -E source_file.c-E,只執行到預編譯。直接輸出預編譯結果

Linux GCC常用命令

靜態加載 配置文件 情況 窗口 連接器 執行 二進制 c 語言 標準輸入輸出 Linux GCC常用命令 1簡介 2簡單編譯 2.1預處理 2.2編譯為匯編代碼(Compilation) 2.3匯編(Assembly) 2.4連接(Linking) 3

python常用命令基礎運算符

長度 sci amp 文件編碼 標題 整體 整數 計算 是否為空 基礎運算符 http://www.cnblogs.com/alex3714/articles/5465198.html 身份運算符:is is not成員運算符:in not in ##in 判斷元素是否存

gcc常用命令

lin href 支持 可執行文件 編譯預處理 操作 執行文件 多源 -o2 gcc命令使用GNU推出的基於C/C++的編譯器,是開放源代碼領域應用最廣泛的編譯器,具有功能強大,編譯代碼支持性能優化等特點。現在很多程序員都應用GCC,怎樣才能更好的應用GCC。目前,GCC

linux下終端11選5平臺出租常用命令vi命令修改文件及保存的使用方法

首開 mman bin 軟件包管理 系統啟動 左右移動 包含 地方 執行 首先11選5平臺出租 haozbbs.com Q1446595067介紹一下Ubuntu下各個目錄的一般作用: /這就是根目錄,一臺電腦有且只有一個根目錄,所有的文件都是從這裏開始的。舉個例子:當

Linux常用命令vim的使用

系統 ctrl+v ctrl+ 環境的使用 新增 常用 linu 命令模式 多行 一、Linux常用命令 - 已學 cd (路徑的切換) rm(後接-rf 可刪除文件或文件夾) ls(查看當前路徑下的文件和文件夾) mkdir(創建文件夾) touch(創建文件)

Linux常用命令常見問題

secure 格式 tmp目錄 prompt nat mys 常見問題 -c 文檔 常用命令 查看系統信息 Linux版本uname -a 查看系統內核信息lsb_release -a 查看LSB(L

linux常用命令快捷鍵

inux linux常用命令 創建 lin 返回 ont 搜索 權限 文本 命令 解壓縮(tar zxf 壓縮包名) 創建文件(mkdir 文件名)權限文件(sudo mkdir 文件名) 編輯退出(vim/vi 名字--點擊i編輯--返回--冒號--qw--回車)

alembic常用命令經典錯誤解決辦法

經典 bsp ima 分享 技術分享 nbsp 技術 經典錯誤 bic alembic常用命令和經典錯誤解決辦法

Linux常用命令Shell程式設計基礎

目錄相關 cd - .與.. 分別表示當前目錄和父目錄 - ~與$HOME 都是指當前使用者的主目錄 - cd – 切換到上一次所在的目錄(不一定是父目錄) pwd - pwd 顯示當前目錄 - $PWD與$OLDPWD 兩個變量表示當前目錄和上一次所在的目錄 ls - ls -rtl 檢視

Shell(二)常用命令技巧

命令列一些技巧: * 表示任意字元(也可以無字元) ? 任意一個單字元 [a-z] 包含一個字元範圍中的任一字元 [^a-z] 不包含此範圍的字元 Tab鍵 補齊命令名稱或其他名稱 history 重新輸入以前執行過的指令 !+序號

Xcode 除錯技巧 --常用命令斷點

Xcode 中的除錯技巧與我們的日常開發息息相關,而這些除錯技巧在我們解決Bug時,常常有事半功倍的作用,經常會用到的有各種斷點 和 命令。而這些除錯技巧也經常會在面試中問到,所以不知道的就來看看吧。 除錯命令 在上圖中,右側綠色區域就是Log 輸出區,在 Log 輸出區可以使用一些命令,來輔助除錯。 那

WIndows 系統下的常用命令 檢測方法

一、檢測硬碟速度(Windows 自帶工具)   使用windows 系統自帶的工具測試硬碟讀寫速度    在使用下面命令前,需要獲得管理員許可權,才會在Dos視窗上顯示(否則,一閃而過)     winsat disk -drive + 磁碟符(c、e、f) 二、常見的windows自帶工具/命令

redis之四 常用命令5種資料結構

redis中文官網:string hash list set sortedset 一、基本操作 #獲取所有的key keys * #判斷一個鍵是否存在。存在則返回1,否則返回0 exists mykey #刪除鍵 del mykey #過期時間(單位:秒) #設定過期時間

MYSQL的常用命令增刪改查語句資料型別

連線命令:mysql -h[主機地址] -u[使用者名稱] -p[使用者密碼] 建立資料庫:create database [庫名] 顯示所有資料庫: show databases; 開啟資料庫:use [庫名] 當前選擇的庫狀態:SELECT DATABASE(); 建立資料表:CRE