天天看點

在linux環境下靜态庫(.a)的編譯和使用

庫是預編譯的目标檔案(.o)的集合,它們可以被連結程序式。

标準系統庫可在目錄/usr/lib與/lib中找到。比如,在類Unix系統中C語言的數序庫一般存儲為檔案/usr/lib/libm.a。該庫中函數的原型聲明在頭檔案/usr/include/math.h中。

C标準庫本身存儲為/usr/lib/libc.a,它包含ANS1/ISO标準指定的函數,比如printf。對每一個C程式來說,libc.a都預設被連結。

準備一個簡單helloworld.cpp

我們可以通過下面兩個指令将這兩個函數編譯成靜态庫。

編譯

1.gcc -c helloworld.cpp -o mylib.o //産生目标檔案

2.ar rcv helloworld.a mylib.o //将目标檔案打包成靜态庫

使用

g++ -o helloworld helloworld.cpp -L. -lmylib

或者g++ -o main helloworld.cpp helloworld .a

參考原文

https://www.jianshu.com/p/dd5540f89a23

參考Linux-(C/C++)生成并使用靜态庫/動态庫

https://blog.csdn.net/qq_34199383/article/details/80308782