1>首先生成目標(biāo)文件,但是此時(shí)要加編譯器選項(xiàng)-fpic和鏈接器選項(xiàng)-shared,
gcc-fpic-cadd.c
gcc-fpic-csub.c
生成中間文件add.o和sub.o
2>其次生成動(dòng)態(tài)庫
gcc-shared–olibtiger.soadd.osub.o
生成動(dòng)態(tài)庫libtiger.so,libtiger.so就是我們生成的目標(biāo)動(dòng)態(tài)庫。我們以后使用動(dòng)態(tài)庫和main.c程序生成可執(zhí)行程序
說明:
以上兩部也可以合成一步搞定:
gcc-fpic-sharedadd.csub.c-olibtiger.so
2.使用動(dòng)態(tài)鏈接庫
在編譯程序時(shí),使用動(dòng)態(tài)鏈接庫和靜態(tài)庫是一致的,使用”-l庫名”的方式,在生成可執(zhí)行文件的時(shí)候會(huì)鏈接庫文件。
1>使用命令:
gcc-omainmain.c-L./-ltiger
2>-L指定動(dòng)態(tài)鏈接庫的路勁,-ldtiger鏈接庫函數(shù)tiger。-ltiger是動(dòng)態(tài)庫的調(diào)用規(guī)則。Linux系統(tǒng)下的動(dòng)態(tài)庫命名方式是lib*.so,而在鏈接時(shí)表示位-l*,*是自己命名的庫名。
3>但是程序會(huì)提示如下錯(cuò)誤
errorwhileloadingsharedlibraries:libtiger.so:cannotopensharedobjectfile:Nosuchfileordirect