靜態函式庫:
% cc -c -o foo.o foo.c
% cc -c -o bar.o bar.c
% ar ruv libfoo.a foo.o bar.o
動態函式庫:
% cc -fPIC -c -o foo.o foo.c
% cc -fPIC -c -o bar.o bar.c
% cc -shared -Wl,-soname,libfoo.so.0 -o libfoo.so foo.o bar.o
-Wl選項告訴編譯器將後面的參數傳遞給連結器。
-soname則指定了動態庫的soname(簡單共用名稱,Short for shared object name)
ldd指令可比readelf -d更快得到所需的函式庫名稱,並可用LD_TRACE_LOADED_OBJECTS=1來取代,譬如:
LD_TRACE_LOADED_OBJECTS=1 /bin/ls
LD_TRACE_LOADED_OBJECTS=1 /lib/ld-linux.so.2 /lib/librt.so.1
statifier可將動態連結的執行檔與共享函式庫包裝成為一個檔案的GNU/Linux工具。