下面小編就為大家帶來一篇Linux下g++編譯與使用靜態庫和動態函式庫的方法。 #下,我們通常在IDE如VS的工程中開發C++項目,對於生成和使用靜態庫(*.lib)與動態庫(*.
dll)可能都已經比較熟悉,但是,在linux環境下,則是另一套模式,對應的靜態函式庫(*.a)與動態函式庫(*.so)的產生與使用方式是不同的。會習慣這種使用,因為步驟上並沒有VS下配置那麼繁瑣。所以編譯器用的g++,但是與gcc的使用是相通的)首先是準備工作
,把我們需要封裝成函式庫檔案的函式的頭檔與原始檔寫好,如下:
//myAPI.h int ADD(int a, int b); int MINUS(int a, int b);
//myAPI.cpp #include "myAPI.h" int ADD(int a, int b){ return a + b; } int MINUS(int a, int b){ return a - b; }
//main.cpp #include "myAPI.h" #include <iostream> int main(){ std::cout << "1 + 1 = " << ADD(1, 1) << std::endl; std::cout << "1 - 1 = " << MINUS(1, 1) << std::endl; return 0; }
g++ -c myAPI.cpp
ar crv libmyAPI.a myAPI.o
linux下編譯時透過-shared 參數可以產生動態函式庫(.so)文件,如下
g++ main.cpp libmyAPI.a -o output
產生的動態庫在編譯時需要聲明,運行時需要被依賴。 」標記來告訴G++
驅動程式在連接階段引用
共享函數庫libmyAPI.so。使用時如果提示如下錯誤,則將 libmyAPI.so 移到 /usr/lib 目錄下即可:./output
以上是Linux下g++編譯以及使用靜態函式庫和動態函式庫的方法詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!