生成動態鏈結庫

2021-10-22 21:48:50 字數 869 閱讀 6950

-fpic

pic就是position independent code

pic使.so檔案的**段變為真正意義上的共享

如果不加-fpic,則載入.so檔案的**段時,**段引用的資料物件需要重定位, 重定位會修改**段的內容,這就造成每個使用這個.so檔案**段的程序在核心裡都會生成這個.so檔案**段的copy.每個copy都不一樣,取決於 這個.so檔案**段和資料段記憶體對映的位置.

-wall

該選項能發現程式中一系列的常見錯誤警告

-shared

如果想建立乙個動態鏈結庫,可以使用 gcc的-shared選項。輸入檔案可以是原始檔、彙編檔案或者目標檔案。

wildcard

使用方法如下,主要作用是的萬用字元生效,如下**會得到./core/src的所有cpp檔案路徑資訊

lib_srcs_cxx=$(wildcard ./core/src/*.cpp)
patsubst

替換$(lib_srcs_cxx)中的字元資訊中的cpp關鍵字,為o關鍵字,以此得到每個cpp檔案將要生成的o檔案的路徑

lib_srcs_cxx=$(wildcard ./core/sr

GCC 生成動態鏈結庫

linux 下動態鏈結庫 shared object file,共享物件檔案 的檔案字尾為.so,它是一種特殊的目標檔案 object file 可以在程式執行時被載入 鏈結 進來。使用動態鏈結庫的優點是 程式的可執行檔案更小,便於程式的模組化以及更新,同時,有效記憶體的使用效率更高。如果想建立乙個...

linux生成動態鏈結庫

步驟 1 建立動態鏈結庫 建立caculate.c caculate.h兩個檔案 編譯生成libcac.so檔案 gcc shared fpic caculate.c o libcac.so 2 建立測試程式 建立 main.pc檔案 編譯生成可執行檔案 gcc main.c o main l lc...

Linux C 生成動態鏈結庫

在linux c中生成動態庫方法如下 1,測試程式 1 生成動態庫的源 檔案test.c include stdio.h int get result int firstnum,int secondnum 其介面檔案為 ifndef test h define test h int get resu...