linux學習 建立靜態庫,動態庫,寫簡單的makefile

來源:互聯網
上載者:User

標籤:style   使用   strong   檔案   ar   linux   size   ad   

建立靜態庫
建立四個檔案 bin(可執行檔),lib(庫),include(標頭檔),src(放源檔案)

這裡的起的庫明為add

在src檔案中執行

1)gcc -c add.c //編譯add.c源檔案產生add.o目標檔案
2)ar crsv ../lib/ libadd.a add.o //對目標檔案*.o進行歸檔,產生lib*.a, 把這個組建檔案放在lib裡
3)gcc -o main main.c -L(大些的愛偶,放庫的路徑)../lib   –l(小寫愛偶,庫名為add) add –I(大寫的i) ../include(放標頭檔) 


建立動態庫
gcc -fPIC  -c add.c ../include(放標頭檔) 產生add.o目標檔案
gcc -shared -o libadd.so add.o 產生libadd.so動態庫 這個庫的名是add
將這個庫放在根目錄的lib檔案裡
gcc -o main main.c –l add ../include(放標頭檔) (注意這裡寫的庫名,沒有lib和.so)


動態庫與靜態庫比較:

動態庫只在執行的時候才被連結使用

動態庫可以被多個程式使用,所以也稱共用庫

靜態庫將會整合大程式中,程式執行是不用夾在靜態庫,因此靜態庫會是程式臃腫難以升級,但比較容易部署

動態庫便於升級,但不容易部署


使用makefile 

三個檔案 bin(可執行檔),include(標頭檔),src(放源檔案)

目標項               依賴項
./bin/main:./src/my_add.o ./src/my_minus.o ./src/main.o    //將*.o檔案 產生可執行檔
g++  ./src/my_add.o ./src/my_minus.o ./src/main.o -o ./bin/main -I ./include
./src/my_add.o:./src/my_add.cpp
g++ -c ./src/my_add.cpp -o ./src/my_add.o -I ./include // 產生my_add.o
./src/my_minus.o:./src/my_minus.cpp
g++ -c ./src/my_minus.cpp -o ./src/my_minus.o -I ./include //產生my_minus.o
./src/main.o:./src/main.cpp
g++ -c ./src/main.cpp -o ./src/main.o -I ./include   //產生main.o



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.