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

本文介绍了如何使用g++编译cpp源文件并生成目标文件,然后将它们合并为静态库libtest.a和动态库libtest.so。接着,演示了如何编译app.cpp和app2.cpp,并链接静态库与动态库以生成可执行程序app和app2,展示了静态库与动态库在程序链接时的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

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

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

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

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

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

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

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

 ./app運行程序 輸出 888 999

 編譯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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

自由软件开发者

有你的鼓励,我会更加努力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值