實現目標:main呼叫libmy_test.so,libmy_test.so呼叫libtest.a
原始檔:main.c, my_test.c, test.c及相應.h
生成libtest.a
gcc -fpic -c test.c
ar rcs libtest.a test.o
由libtest.a生成libmy_test.so
gcc -shared -fpic -o libmy_test.so my_test.c -l. -ltest
由libmy_test.so生成main
gcc -o main main.c -l. -lmy_test
注意事項
a. 生成test.o時以及編譯.so時一定要加-fpic
b. 如果原始檔是cpp形,則用g++
c. 如果-ltest出現問題,可直接給出libtest.a
d. 執行時如果提示找不到.so,可使用
export ld_library_path=$(pwd)
Linux GCC編譯使用動態 靜態鏈結庫
在windows下動態鏈結庫是以.dll字尾的檔案,二在linux中,是以.so作字尾的檔案。動態鏈結庫的好處就是節省記憶體空間。1 linux下建立動態鏈結庫 在使用gcc編譯程式時,只需加上 shared選項即可,這樣生成的執行程式即為動態鏈結庫。例如有檔案 hello.c x.h main.c...
linux GCC編譯過程以及靜態庫動態庫編譯
一 gcc編譯指令各項引數 四個步驟 預處理 e gcc o test.i e test.c 彙編 s gcc o test.s s test.c 機器碼 c gcc o test.o c test.c 鏈結 依賴的檔案 gcc o test test.o o 生成目標 g 除錯 1.常用引數 l ...
Linux gcc 製作動 靜態鏈結庫
以 math.c為例 gcc c math.c ar rcs libmath.a math.oar命令 將多個檔案打包成乙個備份檔案 引數r 用來替換庫中已有的目標檔案,或加入新的目標檔案 引數c 表示建立乙個庫,不管庫是否存在,都將建立 引數s 用來建立目標檔案的索引,這在建立較大的庫時能夠提高速...