#生成目標檔案
gcc -c add.c -o add.o
gcc -c sub.c -o sub.o
#製作靜態庫
ar -rcs libmylib.a add.o sub.o
在使用ar工具是時候需要新增引數:rcs
gcc main.c -l[靜態庫路徑] -i[標頭檔案路徑] -lmylib[庫名] -o main
引數說明:
gcc -fpic -c add.c -o add.o
gcc -fpic -c sub.c -o add.o
#-fpic 建立與位址無關的目標檔案
gcc -shared add.o sub.o -o libmylib.so
#生成共享庫,-shared
gcc main.c -l[動態庫路徑] -i[標頭檔案路徑] -lmylib[庫名] -o main
拷貝自己製作的共享庫到/lib或者/usr/lib(不能是/lib64目錄)
臨時設定ld_library_path:export ld_library_path=$ld_library_path:庫路徑
永久設定,把export ld_library_path=$ld_library_path:庫路徑
,設定到
~/.bashrc
或者/etc/profile
檔案中
vim ~/.bashrc
#最後一行新增如下內容:
#export ld_library_path=$ld_library_path:/home/me/mylib/
source ~/.bashrc
使用符號鏈結, 但是一定要使用絕對路徑
sudo ln -s /home/me/mylib/libtest.so /lib/libtest.so
Linux靜態庫與動態庫製作及使用
一 二者區別 1 靜態庫是在程式執行前就加入到目標程式中去 動態庫程式執行的過程動態的由目標程式去呼叫 2 靜態庫對空間要求不高,對時間要求高 動態庫對時間要求不高,對空間要求高 二 庫製作 同一目錄下有三個檔案 主 hellomain.c 頭 hellomain.h功能 hellofunc.c 1...
動態庫與靜態庫的製作(詳細)
之前一直對動態庫靜態庫這個概念很模糊,到了快找實習的時候,決定認真地學一遍,畢竟這到了公司之後會經常用到。下面是我自己學習的一些筆記 簡單地來說 個人的理解,可能有偏差,希望大神指正 1 在編譯生成二進位制檔案時,動態庫的源 沒有放到二進位制檔案中,編譯時需要告訴編譯器動態庫的路徑 2 在編譯生成二...
Linux平台靜態庫 動態庫的製作與使用
一 靜態庫 當前目錄結構 code include head.h library dynamic library static library src c 11 thread createlib add.c div.c main.c mult.c sub.c include目錄存放標頭檔案 src目...