一、創建so庫
1.文件-->新建文件或項目-->Library->C++ Library,如下圖
2.工程命名為Example
3.一直下一步就可以
4、工程創建完成,如下圖
5、刪除Example_global.h
6、配置.pro文件
# 設置輸出目錄
DESTDIR = $$PWD/output
#只生成.so文件
CONFIG += plugin
7、在Example.h頭文件中添加int Add(int a,int b)函數
8、在example.cpp中實現int Add(int a,int b)
9、構建,在Example工程目錄下回多出1個output目錄,生成的.so文件就存在在output目錄下。
二、調用
1、文件--》新建文件或項目---》Application-->Qt Widegets Application
2、工程名稱為TestSo,一直點擊下一步就完成。
3、在TestSo目錄下新建1個include和lib目錄,用來存放所要調用so庫的頭文件和.so文件,如下圖
4、修改.pro文件
# 設置頭文件路徑
INCLUDEPATH += $$PWD/include
# 設置庫路徑和庫名稱
LIBS += -L$$PWD/lib/ -lExample
# 設置輸出目錄
DESTDIR = $$PWD/output
# 在構建完成后將 lib 目錄下的文件拷貝到 output 目錄
QMAKE_POST_LINK += $$quote(cp -r $$PWD/lib/* $$PWD/output/)
5、引入頭文件,調用Add方法,并點擊構建,如下圖
6、在TestSo目錄下就可以生成1個output,里面存放可執行程序TestSo和libExample.so
7、單獨運行TestSo,在終端上輸入./TestSo,出現找不到鏈接庫
8、在終端輸入ldd TestSo,發現libExample.so not found,
ldd TestSo
解決方法:
方法一:
1、在終端上設置鏈接庫的路徑
export LD_LIBRARY_PATH=$PWD:$LD_LIBRARY_PATH
2.ldd在查看一下,libExample.so 已經鏈接成功
3、執行./TestSo
./TestSo
方法二:
1、創建1個腳本文件,命名為run.sh
vi run.sh
2、在run.sh文件中添加一下內容
#!/bin/bash
export LD_LIBRARY_PATH=$PWD:$LD_LIBRARY_PATH
./TestSo
3、修改run.sh權限
chmod 775 run.sh
4、在終端上執行./run.sh
./run.sh