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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

简述linux中动态库和静态库的制作调用流程

發布時間:2023/11/30 linux 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 简述linux中动态库和静态库的制作调用流程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

假設現在有這些文件:sub.c add.c div.c mul.c mainc head.h(前4個.C文件的頭文件)
1.靜態庫制作流程
? ? ? ? gcc -c ?sub.c add.c div.c mul.c ? ? ? ? ? ? ? -->生成 .o目標文件文件
? ? ? ? ar rcs ?libmycal.a ?*.o ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?-->生成.a靜態庫文件(靜態庫的名字構成:lib+你要做的庫+.a)
2.調用靜態庫流程
? ? ? ?方法1) gcc ?main.c -I(大寫的i) ?./ ?libmycal.a -o ?sum ? ? ? ? ? ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? -->生成可執行文件 sum?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? -->(具體格式:gcc+main函數+-I(頭文件路徑)+靜態庫+(-o+指定生成可執行文件名字)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (括號內的可以不加,默認生成a.out文件? )? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

? ? ? ? ? ? ? ? ? ? ? ./sum ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? -->得到計算結果?
? ? ? 方法 2)gcc ?main.c -L ./ ?-l(小寫的L) mycal ?-I(大寫的i) ./ -o sum ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?-->具體格式:-L+后面接靜態庫的路徑 ?-l+接靜態庫的名字(你自己定義的庫的名字)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?-I+頭文件路徑 -o+指定生成的可執行文件 (同上)
? ? ? ? ? ? ? ? ./sum
3.動態庫的制作流程:
? ? ? ? gcc -fPIC ?sub.c add.c div.c mul.c ? ? ? ? ? ? ? -->生成 .o目標文件文件
? ? ? ? gcc -shared -o libmycal.so *.o ? ? ? ? ? ? ? ? ? ?-->生成動態庫.so文件
4.調用動態庫
? ? ? ?gcc main.c -L ./ ?-l mycal -I ./ -o sum ? ? ? ? ?-->出現調用失敗
5.調用失敗的原因:
? ? ? ?沒有讓main.c和動態庫建立連接;
6.解決辦法
? ? ? ?方法1:使用臨時的動態庫環境變量連接:export LD_LIBRARY_PATH=./(動態庫所在目錄) ? 重啟linux之后失效
? ? ? ?方法2:用vi/vim打開動態庫配置文件:vim /etc/ld.so.conf ? ?在文本中添加動態庫的絕對路徑 ? 然后再用 sudo(使用root權限)idconfig (-v顯示更新信息)更新即可 ?永久有效

總結

以上是生活随笔為你收集整理的简述linux中动态库和静态库的制作调用流程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。