LInux中共享庫的嵌套調用例子
阿新 • • 發佈:2018-03-28
共享庫的嵌套問題親測成功!
參考網址:
嵌套例程: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
參考網址:
嵌套例程: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`
備註:
- -I 後面加頭文件的路徑, -I. 表示在當前的目錄下搜索頭文件
- -Wl,-rpath=/home/yzw/test 表示指定優先搜索的共享庫地址,首先你的地址必須在/etc/ld.so.conf文件中,或者在/etc/ld.so.conf.ld目錄下。
- 來自於鏈接一的補充說明:
ldconfig命名與運行程序市有關,與編譯時一點關系都沒有,因此,在編譯的時候依舊需要加上優先指定庫路徑,如: -Wl,-rpath=/home/yzw/test
LInux中共享庫的嵌套調用例子