Solaris10的CC編譯器部分編譯選項

2021-06-04 02:13:50 字數 1443 閱讀 9697

-g : 生成動態共享庫而不是可執行檔案

在有了這個選項的時候,必須指定鏈結時需要的庫,編譯器不會鏈結任何預設的庫

(gcc下面對應的選項是-shared)

-i : 指定標頭檔案搜尋路徑

-kpic/-kpic :使用與位置無關的**進行編譯。

生成共享庫時使用該選項編譯原始檔。對全域性資料的每個引用都生成為全域性偏移表中

這個選項我懷疑不用的話還能算是動態鏈結庫嗎?

(gcc下面對應的選項是-fpic)

-l : 查詢共享物件的路徑

警告為了確保正確的庫鏈結順序,必須使用-mt(而不是-lthread)與libthread鏈結。

-misalign :sparc:允許記憶體中包含未對齊資料,否則會生成錯誤。如以下**所示:

char b[100];

int f(int * ar) {

return *(int *) (b +2) + *ar;

該選項通知編譯器程式中的某些資料未正確對齊。因此,非常保守的裝入和儲存必須

用於會不對齊的任何資料,即每次乙個位元組。使用該選項會顯著降低執行時效能。性

能降低的程度與應用程式有關。

–mt編譯和鏈結多執行緒**。

該選項將-d_reentrant傳遞給預處理程式,並將-lthread以正確的順序傳遞給ld。

如果應用程式或庫是多執行緒的,則必須使用-mt選項。

為了確保正確的庫鏈結順序,必須使用該選項而不是-lthread來與libthread鏈結。

如果使用的是posix執行緒,則必須使用-mt -lpthread選項來鏈結。由於對於多執行緒應

用程式,libc(相容模式)和libcrun(標準模式)需要libthread,因此必須使用-mt

選項。如果在不同的步驟進行編譯和鏈結並且使用-mt編譯,則可能會得到意外的結果。如

果使用-mt編譯乙個轉換單元,則應使用-mt編譯該程式的所有單元。

–s編譯並僅生成彙編**。

該選項使cc驅動程式編譯程式並輸出彙編原始檔,但不匯程式設計序。彙編原始檔名稱的

字尾為.s。

–verbose=v[ ,v…]

控制編譯器詳細程度。

值v必須是下列值之一。

表a–22 -verbose值

值含義[no%]diags       [不]為每個編譯傳遞列印命令列。

[no%]template    [不]開啟模板例項verbose模式(有時稱為「檢驗」模

式)。verbose模式顯示編譯過程中出現的每個例項階段。

[no%]version     [不]指示cc驅動程式列印所呼叫程式的名稱和版本號。

%all 呼叫以上所有內容。

%none -verbose=%none與

-verbose=no%template,no%diags,no%version相同。

預設值如果未指定–verbose,則假定–verbose=%none。

Solaris 10的執行級別

solaris如何改變系統執行級別 init 系統執行級別有8種,分別為 執行級別 意義 0 進入prom狀態 ok狀態 1 管理狀態 所有檔案系統都掛上的單使用者模式,禁止其他使用者登入 2 多使用者模式 沒有網路檔案共享服務 3 多使用者模式 有網路檔案共享服務 4 未使用 5 退出作業系統並關...

solaris下的C編譯器

想簡單開發,少不了編譯器。沒辦法,上網搜尋了一下,大家都在說sun studio12,看了一下介面也挺漂亮的。雖然挺大的,安裝上去還得1g左右,還是下了下來。結果一堆得問題。首先就是,提示臨時資料夾空間不夠,剛開始沒好好看提示。還理解錯誤了。最後用.sunstudio12u1 sunos x86 p...

Solaris 10原始碼安裝編譯出錯的一種處理辦法

solaris 10原始碼安裝編譯出錯的一種處理辦法 email sery 163.com email from 幾天前,在 solaris 10 下安裝nagiso 的外掛程式nagios plus 時,在編譯 執行 make 命令是,總是不能成功,報錯資訊如下 make fatal error ...