linux動態庫與靜態庫程式設計
阿新 • • 發佈:2018-12-24
個人覺得在linux環境下,動態庫和靜態庫的程式設計更加容易.
首先要熟悉gcc的各個引數意義
-E 預編譯
-S 編譯
-c 彙編成二進位制程式碼,-C 生成可執行檔案
1,編寫static.c
2,將static.c編譯成二進位制程式碼:gcc -c static.c ->得到 static.o檔案
3,將static.o打包成靜態庫: ar r libstatic.a static.o ->得到 libstatic.a
4,編寫動態庫run.c
5,將run製作為動態庫: gcc -fPIC -shared -c run.c -o librun.so ->得到 librun.so
6,編寫主函式main並編譯連結: gcc main.c -L. -l static -l run -o main ->得到 main //注意-L後面有個.
7, ./main
詳細解說
第3步, ar 命令負責將static.o打包, 合理的命名規範是以lib開頭,中間接名字,最後.a結尾,這樣方便後面編譯
第5步, -fPIC 表示生成位置無關的程式碼,-shared表示生成動態庫,然後就會生成librun.so,同上,規範是用lib開頭,名字,然後.so結尾
第6步, -L指示標準庫外的庫地址(標準庫有lib和usr/lib),在這裡-L. 即當前目錄 , -l後面接要連結的動態庫或靜態庫