Linux下QT生成的(.o)、(.a)、(.so)、(.so.1)、(.so.1.0)、(.so.1.0.0)之间的区别

嵌入式Linux Qt开发实战:ELF1开发板环境搭建与优化 嵌入式开发中,Qt框架凭借其跨平台特性和丰富的GUI组件库成为HMI开发的首选方案。通过交叉编译技术,开发者可以在x86主机上构建运行于ARM架构的应用程序,这种开发模式显著提升了嵌入式软件迭代效率。在工业控制、智能家居等物联网终端场景中,需要特别关注目标设备的资源限制(如ELF1开发板的256MB RAM)和显示输出接口适配。实战中,正确配置arm-linux-gnueabihf工具链和Qt Creator集成开发环境是关键步骤,同时合理使用NFS文件共享和valgrind内存分析工具能大幅提升开发效率。 阅读详情
AI摘要

本文解释了Linux下Qt编译过程中.o、.a、.so及其变体的区别,特别是.so文件的软链接特性,并指导如何在Qt项目中通过调整pro文件来控制动态库版本和生成文件数量。,

记录一下遇到的问题:

Linux系统下Qt编译第三方动态库会生成多个.so文件,不了解的小伙伴可能很疑惑:
(1)Linux 下 QT 生成的(.o)、(.a)和(.so)三个文件的区别
(.o)就相当于windows里的obj文件;
(.a)即 linux 下的静态链接库(Statically Linked library),或称静态库;
(.so)即 linux 下的共享库(Shared library),或称动态库;
【备注】在VS中静态库的后缀名为(.lib);动态库的后缀名为(.dll)。

(2)Linux 下 QT 生成的(.so)、(.so.1)、(.so.1.0)和(.so.1.0.0)四个文件的区别
QT在生成动态库时,会默认生成(.so)、(.so.1)、(.so.1.0)、(.so.1.0.0)四个文件。
其中,(.so.1.0.0)为实际的动态库文件,(.so)、(.so.1)、(.so.1.0)均为软链接,都是指向(.so.1.0.0)的链接文件,为了版本控制。

如果不需要Qt生成版本控制,只要单独的so,在pro文件中添加:

CONFIG += plugin

加上之后,使用QCreator编译完之后只会生成一个.so文件;

QT-5.15.0 Linux静态开发库文件详解与部署指南 Qt是一个跨平台的应用程序和用户界面框架,广泛应用于GUI应用开发中。它提供了丰富的工具和库来帮助开发者快速构建稳定的应用程序。Qt使用C++编写,但同时也提供了其他语言的绑定,比如Python。静态库(Static Library),通常以.a(在Linux环境下)或.lib(在Windows环境下)的文件格式存在。在程序编译链接时,编译器将静态库中的代码直接复制到最终的可执行文件中。这意味着静态库一旦链接到应用程序,运行时就不需要静态库文件了。静态库的特性可以归纳为以下几点:独立性。 阅读详情

相关推荐

linux Qt 生成so库,与调用so库实例

创建步聚:创建项目-》先lib选项,一直Next,根据实例写库,构建生成.so库。 调用:右键添加外部库-》修改pro文件-》添加头文件-》创建对象-》调用应库函数。

在ARM64 linux平台运行QT程序

以qt5.12.9,单片机为I.MX8QM为例本文将工具链放在ubuntu的/opt/路径下。

DemoFY的博客 9288

【教程】ENVI主成分分析详解

主成分分析(PCA)是一种统计方法,简而言之就是用几种特性去描述事物。每个事物都可以用不同的特性去进行表达,但这些特性一般而言是存在相互的融合和冗余,而用主成分分析方法将这些特性进行转换成不相关的新特性。 在ENVI软件中共提供了三种主成分分析方式分别为:(1)Forward PCA Rotation Existing Statistics(2)Forward PCA Rotation New Statistics and Rotate(3)Inverse PCA Rotati...

YW_remote的博客 1万+

Linux笔记-so.1和so的区别(三方程序链接Qt的so.1和so)

如果是这样的,那么需要把这些都拷贝到对应的lib目录下,其他程序调用的时候一般不会直接链接到libXXXLib.so,会链接到so.版本号的程序所以有时就会出现error while loading shared libraries .... not found。领导让你从中扣出某个功能,再进行一些业务操作,变成新的程序,而要扣的某些功能,有的用了公司其他人开发的so。②使用ldd,查看程序链接到哪些dll,在国内,写的so一般都没有版本号,没有链到版本号的so要特别注意;最后屁股能坐得住椅子,慢慢测。

IT1995的博客 6281

光伏系统选型指南:5种主流MPPT算法优缺点对比(附选型流程图)

本文深入剖析了光伏系统中五种主流MPPT算法的核心原理与性能差异。通过对比扰动观察法、电导增量法、恒定电压法、模糊逻辑控制及人工智能算法在追踪精度、响应速度、实现成本与稳定性等方面的表现,为不同应用场景(如户用、工商业及大型电站)提供了清晰的选型决策流程图和实战指南,帮助工程师优化系统效率与投资回报。

weixin_29294597的博客 106

基于GIS的生态安全网络格局构建(附练习数据下载)

基于GIS的生态安全网络格局构建(附练习数据下载)

qq_43173805的博客 3124

Linux|qtcreator编译可执行程序双击运行

Linux|qtcreator编译可执行程序双击运行

编程改变世界。想做一些改变世界的产品。感谢一键三连。 2493

企业微信获取code,URL详解

“https://open.weixin.qq.com/connect/oauth2/authorize?”+ “appid=”企业ID “&redirect_uri=”重定向路径+ “&agentid=”小程序AgentId+ “&response_type=code&scope=snsapi_userinfo&state=123&conn...

weixin_44804985的博客 8734

Qt在linux系统上使用技巧

QT在生成动态库时,会默认生成(.so)、(.so.1)、(.so.1.0)、(.so.1.0.0)四个文件。其中,(.so.1.0.0)为实际的动态库文件,(.so)、(.so.1)、(.so.1.0)均为软链接,都是指向(.so.1.0.0)的链接文件,为了版本控制。直接通过绝对路径和相对路径指定库的完整path(需后缀,.lib,.a, .so都适用),相对路径用$$pwd前缀,路径不允许空格。可以用-L指定目录,-l指定库的名称(无需后缀,.lib,.a, .so都适用,这样就不用区分到底是哪种)

baidu_16370559的博客 1620

[特殊字符]交通标志检测与分类数据集-智能驾驶系统 地图数据更新 1,886张图片

🚦交通标志检测与分类数据集-智能驾驶系统 地图数据更新 1,886张图片

cver123的博客 2075

(保姆式教程:从下数据到画图)python如何利用EOF分析SSTA海温异常现象并画图

保姆式教程,教你如何利用python分析1979-2004年的太平洋地区的海温异常SSTA,并且绘制出空间模态和时间序列的图片。

shayuxing的博客 2万+

静态库和动态库的区别以及在C/C++中的调用方法

静态库(.lib)和动态链接库(.dll)是在Visual Studio(VS)中开发和构建应用程序时使用的两种不同类型的库文件,它们在应用程序开发中有不同的用途和特性。

📷 图像处理践行者 | 传统算法 · 深度学习 · 多模态 | 分享实战经验与技术洞见,探索从像素到智能的无限可能。 5362

Unity 之如何使用Pico4u锚点功能实现一个世界锁GameRoot

摘要 空间锚点技术是混合现实(MR)应用的核心,能永久记录虚拟物体的空间位置。文章介绍了在Unity中使用Pico SDK实现空间锚点的完整流程:1)环境配置需安装XR模块和Pico SDK;2)关键操作包括启动空间感知、创建/删除/查询/更新锚点;3)提供了经典应用案例,通过GameRoot节点实现场景固定和锚点同步。源码展示了基于XR交互工具包的锚点抓取与位置更新实现,为MR开发提供了实用参考方案。

TxNet 972

Linux下打包qt程序,可以发布到一台纯净的linux发行版系统上

1.把你要发布的程序单独放到一个文件夹下 2.在文件夹下创建一个sh脚本名为pack.sh 输入以下内容 #!/bin/sh exe="app" #你需要发布的程序名称 des="/home/zzh/RadarDataHub" #程序所在路径 deplist=$(ldd $exe | awk '{if (match($3,"/")){ printf("%s "),$3 } }') cp $deplist $des 脚本很简单,就是利用ldd获取程序依赖库,然后找到依赖路径,通过cp命令caop

17岁boy的博客 6265

DeepSeek与YOLO融合技术的微信小程序实现方案

本文介绍了一个基于微信小程序和Flask后端的智能图像检测系统。系统采用DeepSeek-7B进行自然语言理解,YOLOv8执行目标检测,并通过融合验证模块确保结果准确性。核心流程包括:用户通过小程序上传图片和文本需求,后端解析意图后执行目标检测,最后验证并返回结果。关键技术包括DeepSeek的指令理解、动态阈值调整和模型优化(ONNX、TensorRT)。系统适用于工业质检等场景,如"检测表面划痕",能自动识别目标并验证结果。部署需GPU服务器,并包含安全机制保障系统稳定运行。

老郑的博客 274

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Linux环境打包Qt程序并部署到Docker容器

根据项目需要,将UKylin版本的qt应用程序打包并且部署到docker容器中。

SomeoneLight的博客 4072

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Linux下的QT程序的打包、运行、和关闭程序教程整理

Ubuntu和CentOS7下的QT程序的打包、运行、和关闭教程

m0_67254672的博客 7465

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Qt编译静态链接库和动态链接库(Windows&Linux)

最近需要在Linux中编译相关程序动态库,对相关经验总结。使用到的工具为Qt5.13.2。

watermelon的博客 4253

Qt Linux 环境中应用程序打包

系统环境:Ubuntu20.04LTS 开发环境:Qt5.14.1 打包须知: 在进入程序部署打包之前,阅读官方的部署文档Deploy,通常情况下,我们在开发的时候,Qt Creator 的左下角构建模式为Debug,便于我们调试编写程序。Qt的三个构建模式Debug、Profile、Release的区别是: debug可以调试程序,而release不可以。在程序出现错误的时候,在debug模式下通过设置断点来调试程序。当程序所有错误都解决了以后,在release模式下生成程序,就可以对外发布了。debug

JOBbaba的博客 1万+

Linux qt shell脚本,QT执行shell脚本或者执行linux指令

由于我在做linux下的QT开发,有时候会用到shell脚本的辅助,但是需要QT运行shell脚本并获取执行结果,今天给大家分享下我的技巧,废话少说直接上代码://执行shell指令或者shell脚本的方法QString Common::executeLinuxCmd(QString strCmd){QProcess p;p.start("bash", QStringList() <p.wa...

weixin_34635170的博客 2071

库的概述:qt插件(库)的使用

这里写自定义目录标题qt插件的生成欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入...

love_0_love的博客 1262

Linux动态库加载原理与libbz2.so.1故障实战解析

共享库(Shared Library)是Linux程序复用核心能力的基础机制,其本质是通过动态链接器ld.so在运行时按需加载ELF格式的.so文件。该机制依赖SONAME版本契约、四级路径查找策略(rpath/runpath→LD_LIBRARY_PATH→/etc/ld.so.cache→默认路径)及符号重定位技术,兼顾内存效率与ABI兼容性。技术价值体现在跨进程代码共享、热更新支持和轻量部署,广泛应用于Python扩展、ONNX Runtime、FFmpeg等C/C++底层库集成场景。当出现libbz

weixin_34205826的博客 162

Linux Qt cannot find -lGL 解决方案

Linux Qt cannot find -lGL 错误完美解决方案

心情第一 2111

Linux下QT程序的发布及相关问题

最近,公司要求开发一个Linux上的有画面的程序,记得上学时,开发过嵌入式QT的程序,这是我对QT程序唯一的一点儿经验。这次开发我还是选择了QT。开发环境如下: PC系统版本:ubuntu14.04 QTCreator:5.8.0 之前做过几个windows上 程序,使用的时VS、MFC之类的,商用的集成开发环境一切都是那么方便,由于是首次正式开发Linux上的界面程序,在发布的时候遇到了一些问题,现记录下来。 Linux QT程序要想在没有QT环境的目标机运行,可以采用静态编译,也可以采用动态编译,

chlbd的专栏 628

在Win10的Linux子系统Ubuntu中使用Qt

在Win10的Linux子系统Ubuntu中使用Qt 陈拓 2021/07/26-2021/07/26 1. 概述 在《Win10的Linux子系统Ubuntu安装图形界面》 https://zhuanlan.zhihu.com/p/393145947 https://blog.csdn.net/chentuo2000/article/details/119104547 一文中我们为WSL安装了图形界面。在本文中我们在WSL图形界面的基础上安装和使用Qt。 2. 安装Qt 2.1 Qt和

晨之清风 2584
上一篇: QPainter4.2.3-4.2.4
下一篇: 5.1 QThread的两种使用方式
前行中的小猪
前行中的小猪 领域专家: C/C++技术领域 领域专家: C/C++技术领域
博客等级 码龄10年 4万+粉丝 134原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值