嵌入式學習筆記5 庫

2021-09-17 03:04:45 字數 803 閱讀 4372

庫檔案是用來儲存函式和變數的倉庫,使用者只能使用庫檔案裡的函式或者變數,但是並沒有辦法看到這些函式是如何實現的。

在linux系統中,庫檔案有兩個存放位置,一種是系統啟動和執行需要的庫,放在/lib目錄中,另一種是應用程式啟動或執行需要載入的庫,放在usr/lib中。

庫分為兩種,靜態庫和動態庫。兩者名字都在前面加lib,靜態庫以.a為字尾,在程式編譯時載入。動態庫以.so為字尾,在程式執行時載入。

兩者的主要區別在於:

1.公升級的難易程度不同,使用動態庫的程式直接替換庫檔案,易於公升級;使用動態庫的程式要重新編譯,難以公升級;

2.靜態庫生成的可執行檔案大,占用記憶體多;動態庫生產的可執行檔案小,占用記憶體少;

3.使用動態庫編譯的程式執行編譯速度快於靜態庫,反之,使用靜態庫的程式編譯速度較慢;

4.使用動態庫編譯的程式執行時間慢於靜態庫;

5.使用動態庫難以部署,使用靜態庫更容易部署;

linux環境下如何建立庫:

建立動態庫:

gcc -c -o add.o add.c

gcc -shared -fpic -o libadd.so add.c

建立靜態庫:

gcc -c add.c add.o

ar rcs libadd.a add.c

如何使用庫:

兩種庫使用方法相同,通過-i(小寫l)指定庫名(如 -ladd 使用名為libadd.a的庫),-l指定庫檔案目錄(預設只到/lib和/usr/lib尋找)

gcc -o main -ladd -l. main.c

如何存在同名的靜態庫和動態庫,優先使用動態庫。

嵌入式學習筆記

嵌入式系統定義 技術角度以應用為中心,以計算機技術為基礎,軟硬體可裁剪,應用系統對功能,可靠性,成本,體積,功耗,和應用環境有特殊要求的專用計算機系統系統角度 設計完成複雜功能的硬體和軟體並使其緊密契合在一起的計算機系統 實時在規定的時間內,完成規定的動作 紅帽linux 基本命令 ls 檢視當前目...

嵌入式學習筆記

1 3 買了兩本書鳥哥的 鳥哥的linux私房菜基礎學習篇 第三版 和偉山東的 嵌入式linux應用開發完全手 冊 暫時看不懂 4 看了王剛的 linux系統移植 第二版 實現了windows和linux虛擬機器的檔案的共享 2014 11 02 主機可以ping通虛擬機器,虛擬機器ping不通主機...

嵌入式系統開發學習筆記(5)

嵌入式系統開發學習筆記 4 1 myhead 標頭檔案 2 總控makefile 進入各個功能子目錄執行make命令,並將所有的.o檔案生成可執行檔案 3 scripts 指令碼檔案 4 功能目錄makefile 將功能目錄下所有的.c檔案編譯成.o檔案 5 指令碼目錄makefile 定義其他ma...