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