1. ldd 可檢視程式需要哪些動態庫
nm 可檢視程式,庫里有哪些函式
file 可檢視檔案的型別
objdump -d 反彙編.o/.a/.so/elf可執行檔案
2. 製作靜態庫 (test1.c test2.c)
gcc test1.c -c -o test1.o
gcc test2.c -c -o test2.o
ar -cr libmy.a test1.o test2.o
使用:gcc test.c ./libmy.a -i 標頭檔案的所在路徑
或者gcc test.c -l 庫所在路徑 -lmy -i 標頭檔案的所在路徑
3. 製作動態庫(test1.c test2.c)
gcc test1.c test2.c -shared -fpic -o libmylib.so
使用:gcc test.c ./libmylib.so
或者gcc test.c -l 庫所在路徑 -lmylib
庫發布:
把庫複製到/lib/ 或者 /usr/lib
或者: export ld_library_path=庫所在路徑
vim /etc/ld.so.conf
增加庫所在的絕對路徑
ldconfig
4. 手動載入動態庫 gcc test.c -ldl
handle = dlopen(庫路徑檔名, rtld_lazy);
dlsym(handle, "函式名"); //返回函式的位址
dlclose(handle);
gcc -rdynamic test.c -o test -ldl
靜態庫與動態庫
linux下靜態庫 a 的例子 mylib.h 位於include資料夾下 ifndef mylib h define mylib h int add int a,int b endif mylib.cpp 位於lib資料夾中 include mylib.h int add int a,int b ...
靜態庫與動態庫
庫本質上是一種可執行的二進位制 可以被作業系統載入 linux和windows的庫是不相容的 庫可以分為靜態塊和動態庫,二者的不同點在於 被載入的時刻不同。靜態庫 在程式編譯時會被連線到目標 中,程式執行時不再需要改靜態庫,體積較大,一般應用與移植過程中在宿主機上編譯的 靜態庫檔名的命名規範是以li...
靜態庫與動態庫
1.靜態庫 工程在呼叫靜態庫時,複製靜態庫,源 加長,不節省程式空間。字尾名.a 優點 程式設計後不需要再依賴庫 以空間換時間 建立靜態庫 gcc c 原始檔.c ar rcs rcu 靜態庫名 目標檔案1 目標檔案2 rc 靜態庫不存在,就建立該庫檔案 s 更新靜態庫 使用 gcc o file ...