日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

step4 . day4 库函数和库函数的制作

發(fā)布時間:2024/4/17 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 step4 . day4 库函数和库函数的制作 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

函數(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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。