gcc在編譯器的各類用途

2021-10-24 19:57:16 字數 3185 閱讀 6365

二、gcc編譯工具的各類用途

三 、程式背後的優秀**庫

四、總結與參考資料

1、將one.c檔案編譯為one.o檔案

2、將two.c檔案編譯為two.o檔案

3、將main.c檔案編譯為main.o檔案

執行ls命令,產生了.o檔案,表明編譯完成

ar -crv libzxw.a one.o two.o

ls命令結果中有libzxw.a

在程式中使用靜態庫

gcc -o all main.c -l. -lqwe

執行./all,顯示程式運算結果

由靜態庫鏈結的檔案大小為7.6kb

由動態庫鏈結的檔案大小為1.6kb

靜態庫的**在編譯過程中已經被載入可執行程式,因此體積較大;動態庫的**是在可執行程式執行時才載入記憶體的,在編譯過程中僅僅是簡單的引用,因此**體積較小。

在ubuntu下安裝nasm

sudo apt install nasm,輸入前面所設定root許可權的密碼,敲下回車鍵進行安裝

建立目錄test0;然後使用nano文字編輯器生成乙個hello.c程式

程式**示例:

建立目錄,編輯.c檔案:

用gcc對.c進行簡單編譯:

一步到位編譯指令:gcc test0.c -o test0

預處理:gcc -e test0.c -o test0.i

編譯為彙編**:gcc -s test0.i -o test0.s

彙編:gcc -c test0.s -o test0.o

連線:gcc -c test0.o -o testo

在命令視窗中,執行./test0, 顯示hello world

用binutils的size命令檢視可執行檔案大小:

用nasm編譯hello.asm檔案(ubuntu為64位)

執行./hello顯示結果:hello world

move(y,x);將游標移動至(x,y)處;

refresh();我們寫入的內容首先會在系統緩衝區中,經過refresh()函式重新整理之後才能夠顯示到螢幕上;

echo()和noecho();輸入的字元顯示和不顯示在終端上;

getch();輸入乙個字元;

getstr();輸入一串字串;

scanw("%s",s);;按指定格式輸入內容,類似於scanf();

mvaddstr();移動到某個位置輸入…

如果想清楚更多的相關函式,可參考下面鏈結

1、: linux下curses庫的基本操作.

2、: linux - curses函式庫.

在 windows系統中,「控制面板」–>「程式」—>「啟用或關閉windows功能」,啟用 「telnet client」 和"適用於linux的windows子系統"。 然後開啟乙個cmd命令列視窗,命令列輸入telnet bbs.newsmth.net輸入指令:sudo apt-get install libncurses5-dev,敲擊回車鍵

查詢curses的標頭檔案.h與庫檔案.so,.a

輸入查詢指令:

標頭檔案:whereis curses.h

庫檔案:whereis curses.*

sudo apt-get install open-vm-tools

sudo apt-get install open-vm-tools-desktop

安裝完成後,選擇重啟此虛擬機器,即可進行複製貼上啦

用此指令編譯gcc q.c -lcurses -o q,./q執行q.c

通過對編譯器後面故事的了解,懂得如何使用gcc生成庫檔案(.a,.so),

用.o檔案連線靜(動)態庫,以及它們在程式中的使用方法等;用gcc編譯終端遊戲,體會curses庫是怎麼被鏈結和使用的。在此過程中,也遇到了不少問題,基本都自己解決了。希望此作品對你有所幫助。

1、 用gcc生成靜態庫和動態庫.

2、 linux gcc常用命令.

3、 靜態庫.a與.so庫檔案的生成與使用.

4、 gcc編譯器背後的故事.

gcc編譯器簡介

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

gcc編譯器(二)

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

GCC編譯器學習

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