辛星整理Linux下常用的gcc引數

2021-06-29 08:38:41 字數 1656 閱讀 8920

首先說一下gcc和g++分別是gnu的c和c++編譯器,而且它們在進行編譯的時候,一般需要分為四步:

①預處理,對於cpp會生成.i檔案,使用預處理器cpp

②將預處理後的檔案不轉換為組合語言,生成.s檔案,使用編譯器egcs

③將彙編檔案變成目標檔案,也就是生成機器碼,這裡就是生成.o檔案,使用彙編器as

④連線目標**,生成可執行程式,使用聯結器ld

其中主要引數為:

-x   language   filename它是設定檔案使用的語言,此時字尾名是無效的,雖然我們約定c語言的字尾是.c,c++語言的字尾名是.cpp,但是此時我們可以隨意使用字尾名。通常可用的引數有:c、objective-c、c-header、c++、cpp-output、assembler、assembler-with-cpp。比如我們可以使用命令cpp   -x  c    hello.xin

-x    none   filename   它是關閉上乙個選項,讓gcc根據檔名的字尾自動判斷檔案型別,比如gcc  -x   c  hello.xin  -x   none   hi.c

-c是只啟用預處理、編譯和彙編,也就是它只把程式做成obj檔案,我們可以使用gcc  -c  hello.c會生成.o的obj檔案

-s只啟用預處理和編譯,能夠把檔案編譯成為彙編**,比如我們gcc  -s   hello.c會生成.s的彙編**,我們可以使用文字編輯器檢視。

-e  只啟用預處理,這個不生成檔案,我們需要把它重定向到乙個輸出檔案裡面,比如gcc  -e  hello.c  >  xin.txt或者gcc   -e   hello.c  |more來檢視。

-o指定目標名稱,預設gcc編譯出來的檔案是a.out,我們可以使用gcc  -o    hello   hello.c的方式。

-pipe使用管道代替編譯中的臨時檔案,使用非gnu彙編工具的時候可能會有問問題。

-undef取消對任何非標準巨集的定義

-idir  在我們使用#include的時候,gcc會先在當前目錄查詢我們所制定的標頭檔案,如果沒有找到,它會到預設的頭目錄檔案去找,如果使用-i指定了目錄,他會先在我們指定的目錄查詢,然後到常規的目錄去找。

-i-是取消前乙個引數的功能,一般在-idir之後使用。

-c在預處理的時候,不刪除注釋資訊,一般和-e使用,在分析程式的時候很方便

-m生成檔案關聯的資訊,包含目標檔案所依賴的所有源**,我們可以用gcc  -m  hello.c來測試

-mm和-m一樣,但是他忽略由#include  造成的依賴關係

-md和-m相同,但是將輸出匯入到.d的檔案裡面

-mmd和-mm相同,把輸出匯入到.d的檔案裡面

-library是指定編譯時使用的庫。

-ldir指定編譯時,搜尋庫的路徑,其中dir是我們的目錄的名稱。

-o0、-o1、-o2、-o3是編譯器的優化選項的四個級別,其中-o0表示沒有優化,-o1為預設值,而-o3的優化級別最高

-g只是編譯器,在編譯的時候,產生除錯資訊

-gstabs它以stabs格式產生除錯資訊,但是不包含gdb除錯資訊

-ggdb會產生gdb的除錯資訊

-static會禁止使用動態庫,因此編譯出來的東西一般都很大

-share會盡量使用動態庫,所以生成檔案很小,但是需要使用動態庫

-traditional師徒讓編譯器支援傳統c語言特性

辛星整理Linux下的 var目錄

首先說一下 var目錄吧,它一般儲存系統執行時需要改變的資料,一般每個系統都是指定的,下面是一些常見的子目錄的說明 1 var lib 系統正常執行時需要改變的檔案。2 var local 它儲存安裝的程式的可變資料,通常是系統管理員安裝的程式 3 var lock 它儲存的是鎖定檔案,許多程式有這...

辛星整理網域名稱下的cookie問題

對於非頂級網域名稱,比如二級網域名稱或者 網域名稱,設定的cookie的domain只能為頂級網域名稱或者二級網域名稱或者 網域名稱,不能設定成其他的二級網域名稱,否則cookie無法生成。而對於xinxingjiaocheng.com也只能設定其domain為xinxingjiaocheng.co...

辛星簡述ul和li的常用樣式

我們可以對ul使用list style none來取消列表前面的圓點。而margin 0px則通常用來刪除ul的縮排。而list style type是用來定義li列表的專案符號的,即列表前面的修飾,它是乙個可繼承屬性。而list style image則是用來代替專案符號,它是乙個可繼承屬性。而l...