linux共用庫

來源:互聯網
上載者:User

標籤:使用   strong   檔案   linux   for   代碼   

庫:是一組預先編譯好的函數的集合,linux中標準系統庫檔案一般儲存在/lib和/usr/lib目錄中

靜態庫:在程式編譯過程中,就被連結到了程式編寫者所寫的原始碼中,靜態庫以.a結束。

共用庫:在程式運行時載入,編譯時間只需說明所需要的共用庫檔案即可。共用庫以.so接受。

標頭檔:用於儲存程式的聲明。

makefile檔案:makefile帶來的好處就是——“自動化編譯”,一旦寫好各檔案的依賴項及其編譯方式,只需要一個make命令,整個工程完全自動編譯,極大的提高了軟體開發的效率。

一.共用庫樣本:

1、在bill.h標頭檔中,寫函數求數組最大元素的函式宣告;

$ more bill.h
int bill(int a[], int n);

2、在bill.c檔案中引入標頭檔,寫該函數的實現;
$ more bill.c
#include "bill.h"
int bill(int a[], int n)
{
    int i,max = a[i];
    for( i = 0; i < n; ++i)
    {
        if( max < a[i])
        {
            max = a[i];
        }
    }
    return max;
}
3、在main.c中寫主程式內容,調用該函數,此時,需要引入標頭檔
$ more main.c
#include <stdio.h>
#include "bill.h"
int main()
{
    int MAX;
    int ar[10] = {1,23,21,34,45,56,57,48,90,100};
    MAX = bill(ar,10);
    printf("%d\n",MAX);
    return 0;
}

4、編譯共用庫以及main.c;
$ gcc -shared -fPIC bill.c -o libbill.so

結果如下:

$ ls
bill.c  bill.h  libbill.so  main.c

5、設定環境變數(未設定環境變數,則系統只在預設的標準路徑下尋找共用庫,設定了環境變數之後,則系統首先在環境變數指定的路徑下尋找共用庫)

/*此環境變數的設定只是對於共用庫而言*/
$ export LD_LIBRARY_PATH=./

6、編譯產生可執行程式/* 其中-L.表示庫檔案的尋找路徑為當前路徑(.),-lbill表示所要使用的檔案分享權限設定庫檔案名稱為bill

標頭檔由於處於當前路徑,故可以省略不寫,當處於系統標準路徑時也可省略不寫*/
$ gcc -o main main.c -L. -lbill

7、編譯成功,執行main程式
$ ls
bill.c  bill.h  libbill.so  main  main.c
$ ./main
100

二.共用庫的makefile:

仍然上面為例子:

1、上例中原始碼為:

$ ls
bill.c  bill.h  main.c  makefile
2、makefile檔案如下:

$ more makefile
main: main.o libbill.so
export LD_LIBRARY_PATH=./
gcc -o main main.c -L. -lbill
main.o: main.c bill.h
gcc -c main.c
libbill.so: bill.c
gcc -shared -fPIC bill.c -o libbill.so

3、make的過程:

$ make
gcc -shared -fPIC bill.c -o libbill.so
export LD_LIBRARY_PATH=./
gcc -o main main.c -L. -lbill

4.執行結果為:

$ ./main

100

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.