国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁 > 編程 > C > 正文

深入探討Linux靜態庫與動態庫的詳解(一看就懂)

2020-01-26 16:07:26
字體:
來源:轉載
供稿:網友
庫從本質上來說是一種可執行代碼的二進制格式,可以被載入內存中執行。庫分靜態庫和動態庫兩種。
一、靜態庫和動態庫的區別
1. 靜態函數庫
這類庫的名字一般是libxxx.a;利用靜態函數庫編譯成的文件比較大--空間,因為整個函數庫的所有數據都會被整合進目標代碼中,他的優點就顯而易見了,即編譯后的執行程序不需要外部的函數庫支持,因為所有使用的函數都已經被編譯進去了。當然這也會成為他的缺點,因為如果靜態函數庫改變了,那么你的程序必須重新編譯。
2. 動態函數庫
這類庫的名字一般是libxxx.so;相對于靜態函數庫,動態函數庫在編譯的時候并沒有被編譯進目標代碼中,你的程序執行到相關函數時才調用該函數庫里的相應函數,因此動態函數庫所產生的可執行文件比較小。由于函數庫沒有被整合進你的程序,而是程序運行時動態的申請并調用--時間,所以程序的運行環境中必須提供相應的庫。動態函數庫的改變并不影響你的程序,所以動態函數庫的升級/更新比較方便。
 
二、靜態庫

(一)簡單介紹
/opt/hisi-linux/x86-arm/gcc-3.4.3-uClibc-0.9.28/usr/bin/arm-hismall-linux-gcc /
  main.c src/* -I./include -L./lib -lmpi -o main
    /opt/hisi-linux/x86-arm/gcc-3.4.3-uClibc-0.9.28/usr/bin/arm-hismall-linux-gcc 為交叉編譯工具鏈
    /為換行,表示下一行與當行為同一行,‘/'后面不能有空格
    main.c 為主函數
    src/* 為源文件
    -I后面接頭文件
    -L后面接庫文件路徑路徑
    -l后面接庫文件名,全名為libmpi.a
    .a為靜態庫

(二)編寫及使用靜態庫
(1)設計庫源碼 pr1.c、pr2.c 和 main.c
復制代碼 代碼如下:

[bill@billstone make_lib]$ cat pr1.c
#include <stdio.h>
void print1(void)
{
                printf("This is the first lib src!/n");
}
[bill@billstone make_lib]$ cat pr2.c
#include<stdio.h>
void print2(void)
{
                printf("This is the second src lib!/n");
}
[bill@billstone make_lib]$ cat main.c
int main(void)
{
                print1();
                print2();
                return 0;


(2)  編譯pr1.c、pr2.c 文件
復制代碼 代碼如下:

[bill@billstone make_lib]$ gcc -O -c pr1.c pr2.c
[bill@billstone make_lib]$ ls -l pr*.o
-rw-rw-r--        1 bill          bill                    804    4 月  15 11:11 pr1.o
-rw-rw-r--        1 bill          bill                    804    4 月  15 11:11 pr2.o

(3)  鏈接靜態庫
為了在編譯程序中正確找到庫文件,靜態庫必須按照 lib[name].a 的規則命名,如下例中[name]=pr.
ar參數意義:
r:在庫中插入模塊(替換)。當插入的模塊名已經在庫中存在,則替換同名的模塊。
s:寫入一個目標文件索引到庫中,或者更新一個存在的目標文件索引。
v:該選項用來顯示執行操作選項的附加信息。
t:顯示庫的模塊表清單。一般只顯示模塊名。
[bill@billstone make_lib]$ ar -rsv libpr.a pr1.o pr2.o
a - pr1.o
a - pr2.o
[bill@billstone make_lib]$ ar -t libpr.a
pr1.o
pr2.o
(4)  編譯鏈接選項
-L 及-l 參數放在后面.其中,-L 加載庫文件路徑,-l 指明庫文件名字.
[bill@billstone make_lib]$ gcc -o main main.c -L./ -lpr     //生成main
(5)執行目標程序
[bill@billstone make_lib]$ ./main
This is the first lib src!
This is the second src lib!

三、動態庫(隱式調用)
(1)設計庫代碼 
復制代碼 代碼如下:

[bill@billstone make_lib]$ cat pr1.c
#include <stdio.h>
int p = 2;
void print(){
                printf("%p:%d/n", &p, p);
                printf("This is the first dll src!/n");
}

(2)生成動態庫  xxx.so
復制代碼 代碼如下:

[bill@billstone make_lib]$ gcc -O -fpic -shared -o xxx.so pr1.c
[bill@billstone make_lib]$ ls -l *.so
-rwxrwxr-x        1 bill          bill                  6592    4 月  15 15:19 xxx.so

(3)動態庫的隱式調用 
復制代碼 代碼如下:

[bill@billstone make_lib]$ cat main.c
int main()
{
       print();
       return 0;
}
[bill@billstone make_lib]$ gcc -o main main.c ./xxx.so
[bill@billstone make_lib]$ ./main
0x97b5d4:2
this is the first lib src!


當動態庫的位置發生改變時,  程序將無法正常運行;  而動態庫取代靜態庫的好處之一則是通過更新動態庫而隨時升級庫的內容.
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
国产日本韩国在线播放| 伊人免费视频| 青草视频在线播放| www在线视频观看| 四虎精品视频| 久久久久久五月天久久久久久久久| 日本韩国精品一区二区| 黄色电影网站在线观看| 国产亚洲精品自在线观看| 国产成人精品实拍在线| 亚洲视频网站在线| 成人免费一区二区三区牛牛| 国产极品视频| 69久久精品| 激情丁香婷婷| 在线视频中文字幕久| 国产尤物一区二区三区| 在线中文字幕视频观看| 不卡av免费观看| 91www在线观看| 久久国产热视频| 97在线免费| 黄网站app在线观看下载视频大全官网| 国产精品亚洲第五区在线| 91视频黄色| 国产偷倩在线播放| 免费女人毛片视频| 99爱视频在线观看| 天天av天天爱| 欧美日韩在线资源| 尤物视频在线观看视频| 国产午夜在线观看| 国产精品自拍在线观看| 好看的中文字幕在线播放| 亚洲综合在线不卡| 夜色资源网av在先锋网站观看| 国产精品冒白浆免费视频 | 中文在线视频观看| 国产丝袜视频在线播放| 最近中文字幕在线中文视频 | 导航福利在线| 日本一二区视频| 亚洲精品男人| 免费网站看黄yyy222| 男人天堂99| 国产免费视频| 国产探花在线观看| 国产精品视频一区二区三区麻豆 | 国产日本视频| 欧美性xxxx交| 18加网站在线| 欧美xxxx黑人又粗又长| 91精品国产高久久久久久五月天| 黄网在线免费| 久草亚洲一区| 国产卡1卡2卡三卡在线| 中文字幕国产在线| 国产一级粉嫩xxxx| 精品a在线观看| av高清在线| 永久免费av网站| 中文字幕在线视频网| 蜜桃av在线免费观看| 九九在线视频| 国产精品777一区二区| 羞羞视频在线观看免费| 欧美成人久久电影香蕉| 中文字幕专区| 日本免费不卡| 国产黄色免费在线观看| www.夜夜操| 国产精品美女一区二区三区四区 | 狠狠操五月天| 国产日产一区二区| 久久国产情侣| 国产午夜视频| 麻豆网站在线免费观看| 国产人成在线观看| 久草视频国产| 日本一本久久| 97国产在线| 国产一级性片| 天堂资源最新在线| www.狠狠色.com| 亚洲最新永久观看在线| 国产黄色高清在线| 国产精品一区二区三区视频网站| 中文乱码字幕高清在线观看| 天天操天天射天天色| a视频在线播放| 精品亚洲成a人片在线观看| 国产乱子伦三级在线播放| 碰草在线视频| 久热免费在线视频| 免费国产阿v视频在线观看| 日本在线天堂| 人成在线免费视频| 四虎国产精品永久在线| 在线视频中文字幕久| 国产www网站| 精品国产福利一区二区在线| 2019天天操夜夜操| 精品国产一区二区三区不卡在线 | www狠狠操| 在线视频三级| 日本在线天堂| 交换国产精品视频一区| 青青草视频在线观看| 老鸭窝av在线| 最新中文字幕在线视频| 国产日本在线观看| 国产精品被窝福利一区| 中文字幕4区| 亚洲精品在线视频免费| 欧美视频免费一区二区三区| wwwww在线观看免费视频| 九九热在线视频观看| 国产欧美日本亚洲精品一4区| 69视频在线观看| 日p在线观看| 国产美女在线一区二区三区| 国产乱精品一区二区三区| 最近中文字幕mv免费高清视频8| 国产精品视频一区二区图片| 中文在线观看视频| 成人欧美日韩| 亚洲欧美国产另类首页| 尤物视频在线观看| 精品三级久久久久久久电影聊斋| 一本大道香蕉久久| 成年人在线观看| 伊人伊人av电影| 国产麻豆高清视频在线第一页| 91香蕉视频免费在线观看| 人人九九精品| 精品国产白色丝袜高跟鞋| 九九在线观看免费视频| 永久免费网站在线| 国产精品免费91| 国产女人在线观看| 欧美视频免费一区二区三区| 国产人成在线观看| 成年网在线观看免费观看网址| 制服丝袜中文字幕在线观看| 国产一二区在线| 蜜桃视频网站在线| 亚洲精品一线| 精品极品三级久久久久| 国产三级自拍| 中文字幕在线观看日本| eeuss影院www在线观看| 97在线超碰| 国产激情视频一区二区| 国产卡一卡二卡三| 黄污在线观看| 丁香花视频在线观看| 青青草免费观看免费视频在线| 在线视频福利| 精品999视频| 在线观看国产视频| 国产黄色av免费看| 国产欧美日本亚洲精品一4区| 最近免费中文字幕大全免费第三页| 超碰97国产精品人人cao| 亚洲欧美精品日韩欧美| 日本福利午夜视频在线| 天天操夜夜添| 久热精品视频在线播放| 免费精品国产自产拍在| 日本免费不卡| 国产在线观看av| 丁香花高清视频完整版在线观看| 国产美女自拍视频| 国产图片综合| 精品a在线观看| 永久免费网站在线| 青青艹在线视频| √天堂中文在线| 99在线视频影院| www中文字幕在线观看| 黄色免费av| 91午夜在线| 九色自拍视频| 2019中文字幕在线视频| 天天噜天天色| 天堂在线看视频| 伊人网站在线| 最近中文字幕av免费高清| 精品无吗乱吗av国产爱色| 另类视频在线| 国产视频97| 久久99国产视频| 国产二区视频| 二区三区中文字幕| 精品国内自产拍在线视频| 国产在线二区| www在线视频观看| 影音先锋在线中文字幕| 国产一级激情| 久久99精品久久久久久野外|