step4 . day4 库函数和库函数的制作
函數(shù)庫: 具有特定功能的函數(shù),系統(tǒng)或者第三方提供的編譯好的二進制文件(如數(shù)學(xué)庫、線程庫等),分為靜態(tài)庫和動態(tài)庫。
靜態(tài)庫:代碼運行時候,將靜態(tài)庫代碼復(fù)制進文件(用到哪些復(fù)制哪些),移植性好,但是代碼體積大,升級庫后需要重新編譯源文件
生成靜態(tài)庫的步驟:
1)寫庫文件源碼? 即和之前頭文件實現(xiàn)的.c文件類似(通常函數(shù)庫也有頭文件)
2)把源碼編譯為目標文件(*.o)? ? ? ? ?gcc -c xxxx.c xxx.c
3) 用ar命令把目標文件生成lib文件? ? ?ar crs libxxx.a xxx.o xxx.o ...
4)寫調(diào)庫函數(shù)的主程序。
5)把生成的lib文件和主程序一起編譯鏈接
gcc -o 目標文件名 -L庫路徑 -lxxx
gcc -o 目標文件名 -static -L庫路徑 -lxxx
?
動態(tài)庫:不復(fù)制代碼到源代碼,在程序運行時候同事加載庫至內(nèi)存,動態(tài)庫可以被多個程序調(diào)用,動態(tài)庫升級方便,但程序運行依賴庫的加載
生成動態(tài)庫的步驟:
1)寫庫文件源碼,同上
2)把源碼編譯為目標文件(*.o)? ? ?gcc -c -fPIC xxxx.c xxx.c? (路徑無關(guān)文件)
3)生成動態(tài)鏈接庫文件? ? ? ? ? ? ? ? ??gcc -shared -o libxxx.so xxx.o
4)寫調(diào)庫函數(shù)的主程序。
5)把生成的lib文件和主程序一起編譯鏈接
gcc -o 目標文件名 -L庫路徑 -lxxx
6) 生成的庫文件執(zhí)行文件在執(zhí)行的時候找不到庫文件,
下面三種方法可選,
1 把動態(tài)庫添加到系統(tǒng)的庫文件目錄中? ? ? ? ? ? ? ? ? ? ? ? ?//需要權(quán)限,不建議使用
2 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:你的動態(tài)庫路徑? ?//推薦
3 添加/etc/ld.so.conf.d/*.conf文件,執(zhí)行l(wèi)dconfig刷新? ?//需要權(quán)限,不建議使用
轉(zhuǎn)載于:https://www.cnblogs.com/huiji12321/p/11305779.html
總結(jié)
以上是生活随笔為你收集整理的step4 . day4 库函数和库函数的制作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: step4 . day3 目录访问函数
- 下一篇: 计算是几维数组