成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

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

一、系統(tǒng)說明

創(chuàng)新互聯(lián)網(wǎng)站建設(shè)服務(wù)商,為中小企業(yè)提供成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站服務(wù),網(wǎng)站設(shè)計(jì),綿陽服務(wù)器托管等一站式綜合服務(wù)型公司,專業(yè)打造企業(yè)形象網(wǎng)站,讓您在眾多競爭對手中脫穎而出創(chuàng)新互聯(lián)。

    Ubuntu12.04TLS 64位

二、制作靜態(tài)庫

    (1)編寫需要制作成靜態(tài)庫的程序(根據(jù)實(shí)際情況進(jìn)行編寫,這里只是一個簡單例子)

    //bar.h    
    
    #ifndef _BAR_H
    #define _BAR_H
    
    void bar(int i);
    
    #endif

    //bar.c
    #include <stdio.h>
    #include <stdlib.h>
    #include "bar.h"
    
    void bar(int i)
    {
        printf("Hello! I'm bar, i=%d\n", i);
    }

    //foo.h
    #ifndef _FOO_H
    #define _FOO_H
    
    void foo(int i);
    
    #endif

    //foo.c
    #include <stdio.h>
    #include <stdlib.h>
    #include "foo.h"
    
    void foo(int i)
    {
        printf("Hello! I'm foo, i=%d\n", i);
    }

    (2)制作成靜態(tài)庫

    gcc -fPIC -c foo.c bar.c 
    ar rcs libstaticlib.a foo.o bar.o

     編譯生成foo.o 和 bar.o, 最終生成libstaticlib.a

        其中最重要的一個是 -fPIC參數(shù),如果沒有這個參數(shù),如果是32位系統(tǒng)在制作動態(tài)庫的時候沒有問題,但是64位的系統(tǒng)就有問題,制作動態(tài)庫的時候?qū)?/p>

        報錯:

        /usr/bin/ld: foo.o: relocation R_X86_64_32 against `.rodata' can not be used when                 making a shared object; recompile with -fPIC
        foo.o: could not read symbols: Bad value
        collect2: ld 返回 1
        因此將靜態(tài)庫制作成64位機(jī)器上的動態(tài)庫,必須使用-fPIC參數(shù)

     (3)簡單測試

    //main.c
    #include <stdio.h>    
    #include <stdlib.h>
    #include "foo.h"
    #include "bar.h"
    
    int main()
    {
        int i = 9;
        int j = 8;
    
        foo(i);
        bar(j);
    
        return 0;
    }

    gcc main.c -o test -L. -lstaticlib
    ./test

          結(jié)果:

            Hello! I'm foo, i=9
            Hello! I'm bar, i=8

三、用靜態(tài)庫制作成動態(tài)庫

    (1)將上一步得到的靜態(tài)庫解壓,獲得目標(biāo)文件

    ar -x libstaticlib.a

        將獲得目標(biāo)文件foo.o 和 bar.o

     (2)將目標(biāo)文件制作成動態(tài)庫

    gcc -fPIC -shared -o libsharedlib.so foo.o bar.o

         生成動態(tài)庫 libsharedlib.so

     (3)將動態(tài)庫路徑鍵入到加載路徑下

    export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH

            這樣做只是暫時的,終端關(guān)閉就失效了,想永久生效,修改配置文件

        (3)簡單測試

    gcc main.c -o test -lsharedlib
    ./test

        結(jié)果:

             Hello! I'm foo, i=9
             Hello! I'm bar, i=8

四、總結(jié)

    (1)-fPIC 參數(shù)不僅在制作動態(tài)庫的時候使用,當(dāng)將靜態(tài)庫制作到64位機(jī)器上的動態(tài)庫時,編譯靜態(tài)庫時要使用這個參數(shù)

    (2)動態(tài)庫需要制動加載的路徑,因此需要配置加載路徑

    (3)動態(tài)庫與靜態(tài)庫的一些優(yōu)缺點(diǎn)

        內(nèi)存中每一個程序都會有一個代碼的拷貝,而動態(tài)庫在內(nèi)存中只有一份

        靜態(tài)庫編譯的程序可以直接移植到其他地方運(yùn)行,而動態(tài)庫的程序?qū)⒁蛘也坏芥溄訋鞂⒉荒軋?zhí)行

        靜態(tài)庫編譯的程序大小很大

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

網(wǎng)頁名稱:將靜態(tài)庫制作成動態(tài)庫-創(chuàng)新互聯(lián)
轉(zhuǎn)載來源:http://jinyejixie.com/article6/isdig.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)小程序開發(fā)、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、服務(wù)器托管網(wǎng)站制作

廣告

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

小程序開發(fā)
景泰县| 招远市| 虹口区| 金溪县| 凤翔县| 靖远县| 通榆县| 奉新县| 佳木斯市| 江口县| 淄博市| 洪泽县| 固原市| 阳春市| 九江县| 天津市| 铅山县| 昆明市| 锦州市| 靖西县| 吕梁市| 沭阳县| 樟树市| 平南县| 小金县| 江孜县| 读书| 焦作市| 桃源县| 丽江市| 曲靖市| 天柱县| 巫溪县| 长葛市| 宁都县| 涟水县| 车险| 兴隆县| 彩票| 桂平市| 文成县|