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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux的常用操作——静态库

發(fā)布時間:2024/7/19 linux 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux的常用操作——静态库 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1.靜態(tài)庫的制作

1.1靜態(tài)庫的命名

\qquad靜態(tài)庫一律使用lib打頭,靜態(tài)庫名為:lib+靜態(tài)庫的名字+.a。比如:libmylibrary.a,這里面lib和.a是必須要有的。使用nm命令可以查看靜態(tài)庫。

nm 靜態(tài)庫名
1.2靜態(tài)庫的制作步驟

\qquad第一步:將.c文件生成.o文件,比如將hello.c轉(zhuǎn)變?yōu)閔ello.o文件。

gcc -c hello.c -o hello.o

\qquad或者

gcc hello.c -c

\qquad第二步:使用ar將生成的.o文件打包

ar rcs 靜態(tài)庫的名字 生成的所有.o文件
1.3發(fā)布和使用靜態(tài)庫
gcc filename.c 靜態(tài)庫的路徑/靜態(tài)庫名 -o 可執(zhí)行文件名 -I 頭文件的路徑

\qquad或者

gcc filename.c -I 頭文件路徑 -L 靜態(tài)庫路徑 -l 靜態(tài)庫名 -o 可執(zhí)行文件名

2.靜態(tài)庫的優(yōu)缺點

2.1靜態(tài)庫的優(yōu)點

\qquad 1.發(fā)布的程序,即編譯完成后的可執(zhí)行文件,不再需要庫函數(shù)。
\qquad 2.加載庫的速度快

2.2靜態(tài)庫的缺點

\qquad 1.庫被打包到應(yīng)用程序中,導(dǎo)致應(yīng)用程序體積變大。
\qquad 2.庫如果發(fā)生了改變,需要重新編譯。

3.靜態(tài)庫制作實例

  • 源代碼目錄
  • zhaoxr@zhaoxr-ThinkPad-E450:~/linux$ tree . ├── head │ ├── add.h │ └── mul.h ├── lib │ ├── main.c │ └── mul.c └── source└── add.c3 directories, 5 files
  • 生成靜態(tài)庫
  • 這里的靜態(tài)庫不包含主函數(shù)的.c文件,只是把實現(xiàn)打包成靜態(tài)庫,

    首先將功能模塊的.c文件編譯為.o文件,

    zhaoxr@zhaoxr-ThinkPad-E450:~/linux/lib$ gcc -c add.c -o add.o zhaoxr@zhaoxr-ThinkPad-E450:~/linux/lib$ gcc -c mul.c -o mul.o zhaoxr@zhaoxr-ThinkPad-E450:~/linux/lib$ tree . ├── add.c ├── add.o ├── mul.c └── mul.o0 directories, 4 files

    然后生成靜態(tài)庫

    zhaoxr@zhaoxr-ThinkPad-E450:~/linux/lib$ ar rcs libmylib.a add.o mul.o zhaoxr@zhaoxr-ThinkPad-E450:~/linux/lib$ tree . ├── add.c ├── add.o ├── libmylib.a ├── mul.c └── mul.o0 directories, 5 files
  • 生成可執(zhí)行文件
  • zhaoxr@zhaoxr-ThinkPad-E450:~/linux/source$ gcc main.c ../lib/libmylib.a -o app -I ../head/ zhaoxr@zhaoxr-ThinkPad-E450:~/linux$ tree . ├── head │ ├── add.h │ └── mul.h ├── lib │ ├── add.c │ ├── add.o │ ├── libmylib.a │ ├── mul.c │ └── mul.o └── source├── app└── main.c3 directories, 9 files zhaoxr@zhaoxr-ThinkPad-E450:~/linux/source$ ./app a+b=19,a*b=90

    總結(jié)

    以上是生活随笔為你收集整理的linux的常用操作——静态库的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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