-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...