1.編輯並輸入內容到test.cpp與test2.cpp

test.cpp

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

test2.cpp

#include <stdio.h>
int func2()
{
	return 999;
}

將test.cpp與test2.cpp編譯成目標文件:

g++ -c test.cpp test2.cpp

Qt5.12實戰之Linux靜態庫與動態庫多文件生成a與so文件並調用_c++

 一次性生成目標文件 與靜態庫

g++ -c test.cpp test2.cpp && ar rcs libtest.a test.o test2.o

 將生成 的test.o 與test2.o合併成 libtest.a靜態庫

Qt5.12實戰之Linux靜態庫與動態庫多文件生成a與so文件並調用_数据结构_02

 下面將test.cpp與test2.cpp合併生成到libtest.so動態庫

g++ test.cpp test2.cpp -fPIC -shared -o libtest.so

編輯並添加內容到app.cpp與app2.cpp中

Qt5.12實戰之Linux靜態庫與動態庫多文件生成a與so文件並調用_g++_03

 編譯app.cpp並鏈接靜態庫libtest.a 生成 可執行程序

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

 ./app運行程序 輸出 888 999

Qt5.12實戰之Linux靜態庫與動態庫多文件生成a與so文件並調用_数据结构_04

 編譯app2.cpp並鏈接靜態庫libtest2.so 生成 可執行程序

因爲編譯器會自動先查找.so文件 ,沒找到 ,再查找 .a文件

爲了區分 示例 ,所以生成 一個libtest2.so來測試

g++ test.cpp test2.cpp -fPIC -shared -o libtest2.so

編譯生成app2:

g++  -o app2 app2.cpp -L./ -ltest2

 LD_LIBRARY_PATH=./ ./app2運行輸出 888 999

Qt5.12實戰之Linux靜態庫與動態庫多文件生成a與so文件並調用_c语言_05