1. 程式人生 > >Linuxc基礎 二十

Linuxc基礎 二十

靜態庫

靜態庫 要被包含到源程式中的庫
優點 執行速度快
缺點 佔用系統資源比較多
使用的場合 對時間要求很高的場合

靜態庫的製作:
1、把所有的源程式(.c檔案)製作成目標檔案(.o 檔案)
gcc -c mul.c -o mul.o
gcc -c sub.c -o sub.o
gcc -c add.c -o add.o

2、使用工具將所有 .o 打包生成靜態庫檔案(靜態庫的字尾名是 .a )
ar rcs lib庫名.a mul.o sub.o add.o

3、編譯的時候 gcc 庫包含的相關命令
-L 庫檔案所在的目錄
-l(L的小寫) 包含要新增到程式中的庫,後面跟庫名即可
-I(i的大寫) 指定標頭檔案所在路徑

gcc 2.c -L/home -lmylib -I…/

動態庫製作

1、將要作為動態庫的檔案做成目標檔案檔案(.o)
	注意和生成普通目標檔案的區別
	gcc -c   xxx.c  -o xxx.o   -fPIC

2、將目標檔案編譯成動態庫,字尾名是 .so
	gcc -shared  -o lib庫名.so  xxx.o 

3、編譯的時候需要把動態庫加上
gcc src/main.c -L./lib -lmylib -o bin/a.out

4、執行時候會找不到動態庫檔案,解決辦法:

	1、臨時辦法,只在當前終端有效,終端重啟以後就沒用了
		在終端輸入以下命令:
		export LD_LIBRARY_PATH=庫所在目錄的絕對路徑
		
	2、修改終端的配置檔案  ~/.bashrc
		§ vim  ~/.bashrc
		§ 把  export LD_LIBRARY_PATH=庫所在目錄的絕對路徑 
		新增到檔案的最後一行
		§ 重啟終端或者執行命令 source ~/.bashrc  使用配置檔案生效
	
	3、將動態庫放到系統預設目錄下 ===>  /usr/lib
	
	4、配置檔案  /etc/ld.so.conf 
		§ vim /etc/ld.so.conf
		§ 將庫檔案的絕對路徑新增到庫的最後一行
        使配置檔案生效:ldconfig -v