g++ 編譯連結C++程式碼, 生成與使用靜態庫和動態庫
阿新 • • 發佈:2019-02-10
例如我有A.cpp、A.h、main.cpp 三個檔案
編譯連結C++程式碼:
第一步:g++ -c A.cpp main.cpp
這樣就可以編譯A.cpp和main.cpp的程式碼生成A.o和main.o檔案【因為A.cpp包含了A.h的標頭檔案,所以一般編譯時只選擇cpp檔案即可】。
第二步:g++ -o test A.o main.o
這樣就可以把編譯好的.o檔案連結成可執行檔案。-o 後面的引數是編譯好的可執行檔案的名字。當然,也可以跳過第一步,直接【g++ -o test A.cpp main.cpp】一次過編譯並連結生成可執行檔案。
第三步:./test
這樣就可以執行可執行檔案,執行A.cpp和main.cpp 的程式碼。
生成並使用靜態庫。
第一步:g++ -c A.cpp
生成.o檔案
第二步:ar -cr libA.a A.o
生成靜態庫檔案,跟在-cr後面的引數就是庫檔案的名字
第三步:g++ -o test main.cpp libA.a
使用main.cpp 和靜態庫生成可執行檔案
第四步:./test
執行可執行檔案
生成並使用動態庫。
第一步:g++ -c A.cpp
生成.o檔案
第二步:g++ -shared -fPIC -o libA.so A.o
生成動態庫檔案
第三步:g++ -o test main.cpp libA.so
使用main.cpp 和動態庫生成可執行檔案
第四步:./test
執行可執行檔案
也可直接編譯庫檔案,省去中間檔案
靜態庫:ar -cr libA.a A.cpp
動態庫:g++ -shared -fPIC -o libA.so A.cpp