Linux学习笔记-动态库的使用
example.h
libexample.so
如下圖所屬:
現在寫一個.cpp
源碼如下:
main.cpp
#include "example.h"int main(){print(10,30);return 0; }文件路徑如下:
編譯:
g++??‐c?main.cpp?‐o?main.o?
鏈接:
g++?main.o?‐o?helloworld?‐L.?‐lexample
鏈接選項:
‐lexample??使用libexample.so這個庫文件
‐L.??指定庫文件的位置
運行截圖如下:
?
./helloworld
通常會提示無法運行程序:
libexample.so:?...:?No?such?file?or?directo
操作系統默認從標準位置尋找相應的庫
/lib??/usr/lib??/usr/local/lib
如果沒有找到依賴的庫文件,則從
LD_LIBRARY_PATH環境變量里尋找。
?
先使用export命令設置環境變量,?然后再運行
程序。
export?LD_LIBRARY_PATH=.
./helloworld
如下圖:
這樣就闊以運行了,運行截圖如下:
拿到一個可執行程序,怎么知道它依賴哪些庫呢?
readelf?‐d?helloworld
如下圖:
關鍵是看他的NEEDED屬性:
如:
libexample.so
libstc++.so
libm.so
libgcc_s.so
libc.so
?
檢索代碼!
ls /usr/lib | grep libstdc++
運行截圖如下:
總結
以上是生活随笔為你收集整理的Linux学习笔记-动态库的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++ opengl 绘制地面
- 下一篇: 【精】【火】关于CSDN博客与博主的第二