> 文章列表 > Qt5.12實戰之Linux靜態庫編譯與調用完整過程

Qt5.12實戰之Linux靜態庫編譯與調用完整過程

Qt5.12實戰之Linux靜態庫編譯與調用完整過程

1.安裝gedit

sudo apt-get install gedit -y

2.使用gedit編輯靜態庫源文件test.cpp

gedit test.cpp

輸入下面內容 :

#include <stdio.h>
int func()
{return 888;
}

如下圖操作:

 保存test.cpp並編譯 爲目標文件

gcc -c test.cpp

如下圖示,生成目標文件test.o

 使用ar將test.o生成libtest.a靜態庫 libtest.a

ar rcs libtest.a test.o

如下圖所示

 下面編寫一個簡單的可執行程序來調用靜態庫libtest.a靜態庫

gedit app.cpp

 在打開的app.cpp中輸入下面內容:

#include <stdio.h>
#include <iostream>
extern int func();
using namespace std;
int main(int argc,char* argv[])
{int x = func();//調用靜態庫函數 funccout<<x<<endl;return 0;
}

如下圖所示 :

 保存app.cpp並生成可執行程序

g++ -o app app.cpp -L. -ltest

-o app 表示生成的可執行文件名

app.cpp 表示參與編譯的源碼文件

-L. 表示鏈接庫的目錄爲當前目錄

-ltest 表示鏈接庫名,完整庫名會自動在前面添加lib及添加後綴名.a或者.so 

最後完整的庫名會是 libtest.a 或者 libtest.so

編譯器鏈接程序 時會先搜索libtest.so如果找不到會再去搜索libtest.a

編譯成功後會在當前目錄生成 app可執行程序

 運行程序 :

./app