全面闡述Linux動(dòng)態(tài)庫(kù)的隱式調(diào)用
十多年Linux的發(fā)展,Linux已經(jīng)越來越接近微軟,你了解Linux系統(tǒng)么?你是Linux系統(tǒng)的應(yīng)用者么?這里為你講解inux動(dòng)態(tài)庫(kù)的隱式調(diào)用,為你在學(xué)習(xí)Linux動(dòng)態(tài)庫(kù)的隱式調(diào)用時(shí)起一定的作用。
隱式調(diào)用的含義是代碼里不出現(xiàn)庫(kù)文件名,就是說這個(gè)代碼和
調(diào)用靜態(tài)庫(kù)的代碼是類似的。
1、編寫測(cè)試文件
- //main.c 測(cè)試動(dòng)態(tài)庫(kù)隱式調(diào)用的程序
- #include "myalib.h" //要把函數(shù)的頭文件包含進(jìn)來,否則編譯時(shí)會(huì)報(bào)錯(cuò)
- int main(int argc,char* argv[])
- {
- test();
- return 0;
- }
2、 編譯測(cè)試程序,與靜態(tài)庫(kù)類似,要把頭文件的路徑加到-I參數(shù)里面
gcc -I /root/exercise -o main.o -c main.c
現(xiàn)在生成了一個(gè)main.o文件
3、連接生成測(cè)試程序
gcc -o main -L/root/exercise main.o -ltest
現(xiàn)在生成了一個(gè)main文件
4、執(zhí)行測(cè)試程序
./main
此時(shí)出現(xiàn)提示
./main: error while loading shared libraries: libtest.so: cannot open shared object file: No such file or directory。
這個(gè)原因就是程序運(yùn)行時(shí)并不知道動(dòng)態(tài)庫(kù)所在的路徑,因此自然找不到。以上就是Linux動(dòng)態(tài)庫(kù)的隱式調(diào)用的講解。
【編輯推薦】