1. 程式人生 > >LInux中共享庫的嵌套調用例子

LInux中共享庫的嵌套調用例子

共享庫的嵌套問題

親測成功!
參考網址:
嵌套例程:https://my.oschina.net/moooofly/blog/506466.html
linux找不到動態鏈接庫 .so文件的解決方法https://www.cnblogs.com/xudong-bupt/p/3698294.html
Linux共享庫、靜態庫、動態庫詳解:
https://www.cnblogs.com/sunsky303/p/7731911.html

新建一個test測試文件夾,並在這個文件夾內新建一些文件:

技術分享圖片

vim hello.cpp
技術分享圖片

vim hello.h
技術分享圖片

vim usehello.cpp
技術分享圖片

vim usehello.h
技術分享圖片

1.編譯動態鏈接庫

gcc -o hello.so -fpic -shared  -I.   hello.cpp
ls
ldd hello.so

技術分享圖片

gcc -o usehello.so -fpic -shared  -I. -Wl,-rpath=/home/yzw/test  usehello.cpp  hello.so  
ls
ldd usehello.so

切記共享庫寫在.cpp文件的後面,否則就會加載不上動態鏈接庫
技術分享圖片

gcc -o main  -I. -Wl,-rpath=/home/yzw/test  main.cpp usehello.so
ls
ldd main

技術分享圖片

./main`
技術分享圖片

備註:

  1. -I 後面加頭文件的路徑, -I. 表示在當前的目錄下搜索頭文件
  2. -Wl,-rpath=/home/yzw/test 表示指定優先搜索的共享庫地址,首先你的地址必須在/etc/ld.so.conf文件中,或者在/etc/ld.so.conf.ld目錄下。
  3. 來自於鏈接一的補充說明:
    ldconfig命名與運行程序市有關,與編譯時一點關系都沒有,因此,在編譯的時候依舊需要加上優先指定庫路徑,如: -Wl,-rpath=/home/yzw/test

LInux中共享庫的嵌套調用例子