GCC編譯器學習

2021-09-22 18:32:56 字數 1550 閱讀 2000

不同的平台如x86和arm,一段程式跑起來到最下面會轉成彙編,彙編要轉成機器碼,機器碼會由於硬體平台不同而不同。有時候要程式設計序在arm上跑,必須針對arm寫程式,但是在arm上寫程式很麻煩(沒有很好的開發工具),所以我們就在x86平台上(windows)上把程式寫好,但是編譯的時候告訴它我們要執行在arm上。

gcc程式編譯過程

1.先生成目標檔案 .o

2.將目標檔案打包 ar crv[ *.a ] [ *.o ]

呼叫靜態鏈結庫

gcc -o [file][file.c] -l. [file.a]

舉個例子:vi count.c 先寫乙個count函式

gcc -c count.c 生成目標檔案 count.o

ar crv count.a count.o 將目標檔案打包

寫乙個測試程式從庫檔案中呼叫count函式

gcc -o test test.c -l./ count.a 呼叫靜態鏈結庫生成可執行檔案(-l搜尋庫的目錄)

執行程式.

1.生成位置無關的目標** gcc -fpic -c [*.c]

2.gcc -shared -o [ * .so ] [ * .o ]

有兩種呼叫方法:一種是顯式的(在**中新增),一種是隱式的

gcc -o [file] [file.c] -l. [file.so]

關於動態鏈結庫的系統路徑path

①考慮將庫放到系統資料夾下

②配置系統路徑 舉例

1.生成位置無關的目標**

2.生成.so檔案

3.生成可執行檔案

4.執行可執行檔案

發現沒有庫檔案

需要將count.so檔案拷貝到系統庫資料夾下

再執行

gcc編譯器簡介

在linux中選擇gcc編譯器的原因是gcc執行效率高。gcc基本用法 gcc options filename 其中options為編譯選項。例子 執行指令 gcc hello.c 則對hello.c進行編譯,如果程式沒有語法錯誤,則產生可執行檔案a.out gcc預設檔名 執行可執行檔案指令 a...

gcc編譯器(二)

靜態庫 工程在呼叫靜態庫時,複製靜態庫源 加長,不節省程式空間字尾名.a 優點 編譯後不需要再依賴庫 以空間換時間 動態庫 工程建立對映關係,每次呼叫都需要去庫中載入,字尾名為.so 共享庫 程式輕便,便於公升級。小tips 所有程式執行都在記憶體中,硬碟只能儲存程式。靜態庫的建立 gcc c 原始...

VC編譯器與GCC編譯器的區別

今天無意寫了一段 發現了vc編譯器與gun的gcc編譯器還是存在區別的。畢竟gcc支援的是標準c。include struct node int main 上述 在gcc下是編譯失敗的,提示的錯誤 uknown typename node 但是放到vc編譯器下則順利編譯通過。於是按照標準c寫了另外乙...