欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

靜態(tài)庫與動態(tài)庫的制作-創(chuàng)新互聯(lián)

1、相關知識

創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供通川網(wǎng)站建設、通川做網(wǎng)站、通川網(wǎng)站設計、通川網(wǎng)站制作等企業(yè)網(wǎng)站建設、網(wǎng)頁設計與制作、通川企業(yè)網(wǎng)站模板建站服務,十年通川做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡服務。

 (1)、不管是制作靜態(tài)庫還是動態(tài)庫,都得對.o文件進行打包;

 (2)、在/lib64目錄下,靜態(tài)庫文件.a,動態(tài)庫文件.so

2、靜態(tài)庫

 (1)、gcc -c add.c  ------> 生成add.o文件,其中通過參數(shù)(-c);

 (2)、靜態(tài)庫由命令ar創(chuàng)建; ar -cr add.a add.o

(3)、靜態(tài)庫的編譯有兩種方法:

a:gcc test.c -o test -L. add.a //每次都得在編譯時加上-L. 靜態(tài)庫文件;

 b、將.a文件(此時的.a文件必須為lib開頭的)放到/lib64目錄下面,此時就不加-L.參數(shù)了,但是運行時要加上靜態(tài)庫文件(-lxxxx);

樣例實現(xiàn)

第一步:打包成 .o文件

靜態(tài)庫與動態(tài)庫的制作

第二步:創(chuàng)建.a文件

靜態(tài)庫與動態(tài)庫的制作

第三步1:當前目錄下通過-L. .a文件進行編譯

靜態(tài)庫與動態(tài)庫的制作

第四步1:運行結果

靜態(tài)庫與動態(tài)庫的制作

第三步2:不在當前目錄下面加-L. .a文件編譯,此時就必須的改名為libshow.a;然后移到/lib64目錄下面,在編譯時加上參數(shù):-lshow

靜態(tài)庫與動態(tài)庫的制作

第四步2:運行結果

靜態(tài)庫與動態(tài)庫的制作

以上就是靜態(tài)庫的制作了,按照規(guī)定流程走,最好都制作為libxxxxx.a

 a、先生成.o文件;

 b、打包成libxxxx.a文件;

 c、此時2種編譯途徑,當前目錄下利用-L. libxxx.a或-lxxxx進行編譯;

 d、只要編譯成功,放之四海皆可執(zhí)行--------->因為利用靜態(tài)函數(shù)庫編譯的文件比較大

3、動態(tài)庫的制作

 .so:用在版本升級上有優(yōu)勢;核心參數(shù):-shared -fpic

 gcc -shared -fpic -o libshow.so show.c   :-fpic->產(chǎn)生位置無關代碼 -shared:->生成共享庫

樣例實現(xiàn)

第一步:實現(xiàn)創(chuàng)建libxxxx.so文件

靜態(tài)庫與動態(tài)庫的制作

第二步:將libxxxx.so文件移動到/lib64下

靜態(tài)庫與動態(tài)庫的制作

第三步:運行編譯

靜態(tài)庫與動態(tài)庫的制作

注意:

 (1)、動態(tài)庫只有這一種編譯運行的方式,必須將.so文件放到/lib64目錄下,且文件名必須為libxxx.so;

 (2)、靜態(tài)庫的libxxx.a文件不放,也可以編譯運行成功;

4、動態(tài)加載

 在運行時才被加載到內存當中,效率相當?shù)母撸?strong>編譯時要在最后加一個選項:-ldl

通過一系列的API完成;

 靜態(tài)庫與動態(tài)庫的制作

 用C語言實現(xiàn):

第一步:先創(chuàng)建一個libxxx.so文件

靜態(tài)庫與動態(tài)庫的制作

第二步:寫加載的程序

test.c

#include"show.h"
#include<dlfcn.h>

typedef void(*pFun)(char *);   //定義實現(xiàn)該方法的函數(shù)指針

int main(void){
    void *d1 = dlopen("libshow.so", RTLD_LAZY);  //打開這個動態(tài)庫文件
    if(d1 == NULL){
        perror("dlopen");
        return -1; 
    }   

    pFun pfun = (pFun)dlsym(d1, "show");  //尋找名稱為show的函數(shù)

    pfun("abcd");  //找到之后,函數(shù)指針在接著調用即可
    dlclose(d1);

    return 0;
}

第三步:直接進行編譯運行,在最后加上參數(shù):-ldl

靜態(tài)庫與動態(tài)庫的制作

這樣就實現(xiàn)了動態(tài)加載.so文件的方法;

用C++實現(xiàn):

(1)、第一步:創(chuàng)建一個libxxx.so文件

靜態(tài)庫與動態(tài)庫的制作

(2)、第二步:移動到/lib64下

靜態(tài)庫與動態(tài)庫的制作

(3)、第三步:編譯運行

靜態(tài)庫與動態(tài)庫的制作

此時發(fā)送了段錯誤;

分析:

 (1)、C語言找函數(shù)名稱沒有問題;

 (2)、C++在動態(tài)鏈接庫中找不到函數(shù)名字;因為C++具有重載,其函數(shù)名稱早已經(jīng)不是我們所看到的函數(shù)名稱;

解決方案:

 (1)、通過匯編,找其對應的函數(shù)名稱;

 (2)、extern "C" ,擴展C,用C的特性即可;

改進的代碼如下:

/////////////////////////////////////////////////////////////////////////////
show.h
#ifndef _SHOW_H_
#define _SHOW_H_

#include<stdio.h>
#include<iostream>
using namespace std;

extern "C" void show(char *str);  //擴展C,使其擁有C的性質(就將這個函數(shù)當做C語言解釋),函數(shù)名稱就是我們所看到的,好找函數(shù)名稱

#endif
////////////////////////////////////////////////////////////////////////////
show.cpp
#include"show.h"

extern "C" void show(char *str){
    cout<<str<<endl;
}
///////////////////////////////////////////////////////////////////////////////
test.cpp
#include"show.h"
#include<dlfcn.h>

typedef void(*pFun)(char *); 

int main(void){
    void *d1 = dlopen("libshow.so", RTLD_LAZY);
    if(d1 == NULL){
        perror("dlopen");
        return -1; 
    }   

    pFun pfun = (pFun)dlsym(d1, "show");

    pfun("abcd");
    dlclose(d1);

    return 0;
}

靜態(tài)庫與動態(tài)庫的制作

靜態(tài)庫與動態(tài)庫的制作

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

網(wǎng)站名稱:靜態(tài)庫與動態(tài)庫的制作-創(chuàng)新互聯(lián)
網(wǎng)站URL:http://aaarwkj.com/article8/dshsip.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、建站公司、標簽優(yōu)化、動態(tài)網(wǎng)站、搜索引擎優(yōu)化、全網(wǎng)營銷推廣

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設
亚洲不卡高清一区二区三区| av一区二区三区高潮| 熟妇一区二区三区av| 精品国产乱码一区二区三区四区| 亚洲男人天堂超碰在线| 亚洲三级黄片免费播放| 国产日韩欧美在线精品| 91高清国产最新地址| 久久香蕉国产线看观看亚洲| 99热在线免费观看精品| 中文字幕制服国产精品| 欧美在线观看日韩精品| 国产精品久久久久精品爆| 国产偷人伦激情在线观看| 熟妇人妻久久中文字幕麻豆网| 日韩欧美亚洲国产一区久久精品 | 亚洲欧美综合日韩综合久久久| 国产传媒网站在线观看| 亚洲精品一区二区三区毛片| 成年人午夜在线观看网址| 色哟哟视频在线免费观看| 高清欧美一区二区三区日本| 高清一区二区三区不卡视频| 最新人妻少妇精品中文字幕视频| 成人性生活毛片免费视频| 国产区青青操自拍视频| 国产91极品尤物白丝美女| 国产一级二级三级在线电影| 国产美女冒白浆视频免费| 日韩视频免费看一区二区| 成人嚼牙特别黑黄怎么办| 日本在线人妻一区二区| 调教亚洲另类唯美第二页| 国产美女极度色诱视频| 久久91亚洲精品中文字幕| 日本视频一曲二曲三曲四曲| 亚洲国产精品自拍视频| 日本姜女黄视频免费看| 18岁以下禁止观看的视频| 久久精品国产av极品| 午夜男女激情在线观看|