靜態庫製作、編譯:
gcc -c -o main.o main.c
gcc -c -o sub.o sub.c
gcc -c -o sub2.o sub2.c
ar crs libsub.a sub.o sub2.o(可以使用多個.o生成靜態庫)
gcc -o test main.o libsub.a (如果.a不在當前目錄下,需要指定它的絕對或相對路徑)
動態庫製作、編譯:
gcc -c -o main.o main.c
gcc -c -fpic -o sub.o sub.c
gcc -c -fpic -o sub2.o sub2.c
gcc -shared -o libsub.so sub.o sub2.o (可以使用多個.o生成動態庫)
gcc -o test main.o -lsub -l /libsub.so/所在目錄/
動態庫執行:
① 先把libusb.so放到pc或板子上的/lib目錄,然後就可以執行test程式。
② 如果不想把libusb.so放到/lib,也可以放在某個目錄比如/a,然後如下執行:
export ld_library_path=$ld_library_path:/a
./test
參考:我使用過的linux命令之ar - 建立靜態庫.a檔案
關於linux靜態庫和動態庫的分析
linux共享物件之編譯引數fpic
GCC靜態庫 動態庫
1 靜態庫 linux環境下的靜態庫的擴充套件名為 a step 1 編譯原始檔,生成可重定位目標檔案 gcc c static lib.c step 2 使用ar工具建立乙個靜態庫,或者將目標檔案加入到乙個已經存在的靜態庫中。格式 ar rcs 靜態庫名 目標檔案2 目標檔案2 目標檔案n ar ...
Linux下靜態庫 動態庫製作及gcc命令詳解
乙個c語言程式從編寫完成到執行需要經歷預處理 生成.i 編譯 生成.s 彙編 生成.o 鏈結 生成可執行檔案 幾個步驟,如下圖所示。這裡推薦一篇講解的比較全面的部落格 gcc常用引數詳解。我們最常用的gcc編譯選項主要有以下幾個 以下是幾篇講的比較好的部落格 靜態鏈結就是在執行之前講已經編譯好的靜態...
Linux下gcc使用與動態庫靜態庫製作
1.gcc工作流程 1.預處理 gcc e 2.編譯 gcc s 3.彙編 gcc c 4.鏈結 沒引數 2.常用引數 o 指定生成的檔案的名字 d 在編譯的時候定義巨集 控制log的輸出 i 指定標頭檔案的路徑 g gdb除錯的時候需要新增該引數 o 編譯優化,3個等級 o 1 3 wall 編譯...