linux gcc使用靜態庫去編譯生成動態庫

2021-08-06 06:17:56 字數 528 閱讀 1799

實現目標: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 用來建立目標檔案的索引,這在建立較大的庫時能夠提高速...