在ubuntu与qtcreator中,如何将.a文件与.so文件存放在工程目录下并进行第三方库的链接

目录

背景:

运行环境:

获取第三方库的文件

从Ubuntu系统中获取.so文件与.a文件

1.在"usr/lib/x86_64-linux-gnu"目录找到.so与.a文件

2.libxx.so文件与libxx.so.x.x.x文件的区别与联系 

3.对于2中第四点的示例(链接库时,只能选择.so文件或者.a文件):

链接第三方库步骤:

1.将第三方库的.h文件放入include文件夹

2.将第三方库的.so文件以及.a文件放入libs文件夹。

3.链接库


背景:

由于项目要在不同的计算机(Ubuntu系统)之间进行迁移,项目所依赖的第三方库(包括动态链接库以及静态链接库)在其他的计算机上并不一定存在,因此,打算将第三方库放入项目的工程目录下,在项目链接第三方库时,使用工程目录下的第三方库。


运行环境:

Ubuntu 16.04 LTS,Qt5.10.1,C++


获取第三方库的文件

1.可以从网上找资源下载(官网,论坛等等,建议官网)

2.从ubuntu系统中获取

.a文件与.so文件一般在"usr/lib/x86_64-linux-gnu"目录下。.h文件一般在“usr/include”目录下。

.a文件,是LINUX系统中的静态链接库文件。


从Ubuntu系统中获取.so文件与.a文件

1.在"usr/lib/x86_64-linux-gnu"目录找到.so与.a文件

此处显示在本机libtiff库的.so与.a文件,如下所示

ubuntu系统下的libtiff文件


2.libxx.so文件与libxx.so.x.x.x文件的区别与联系 

目录"usr/lib/x86_64-linux-gnu"中libtiff库相关的有libtiff.so和libtiff.so.5.2.4.这两个文件的区别与联系如下图所示。

libtiff.so与libtiff.so.x.x

1..so或者.so.x.x.x有可能是“共享库”,也有可能是“到共享库的链接”。

2.真正系统中需要的是“共享库”,不需要“到共享库的链接”。

3..so文件与.so.x.x.x文件可以重命名,比如.so.x.x.x可以重名为.so文件。

4.qtcreator中打开项目,链接库时,只能选择.so文件或者.a文件,不能选择.so.x.x.x文件


3.对于2中第四点的示例(链接库时,只能选择.so文件或者.a文件):

1.首先工程目录下的libs目录下的文件如下图所示:

这里的.so.x.x.x都是“共享库”文件。

只有.so.x.x

2.在qtcreator中,项目链接外部库时,出现下图的情况:只有.a文件

删除.so文件

3.将工程目录下的libs目录下的文件中的".so.x.x.x”重命名为".so”(注意:此处的.so.x.x.x为“共享库”类型)

将.so.x.x.x重命名为.so文件

4.在qtcreator中,项目链接外部库时,出现下图的情况:有.a文件和.so文件可以选择进行链接。(注意:因为.so.x.x.x为“共享库”类型,而.so由.so.x.x.x重命名而来,因此此处的.so文件为“共享库”类型)

更改之后


链接第三方库步骤:

1.将第三方库的.h文件放入include文件夹

注意:放入哪个文件夹都无所谓,只要在项目中进行链接时,选择.h文件所在目录即可。但建议放入include文件夹。

项目的include文件夹:

include目录下文件

2.将第三方库的.so文件以及.a文件放入libs文件夹。

注意:放入哪个文件夹都无所谓,只要在项目中进行链接时,选择.h文件所在目录即可。但建议放入libs文件夹。

要确保.so文件是“共享库”文件,或者如果是“到共享库的链接”的话,确保能够链接到某个共享库文件。这里最好是选择使.so文件为“共享库”文件。

项目的libs文件夹:

项目工程目录下的libs目录

3.链接库

在qt creator中打开项目,选择项目->添加库->外部库->库文件,选择libs文件夹路径->包含路径,选择include文件夹路径->确定


 

### 配置QtQtPdfium库 #### 安装依赖项 为了成功安装和配置QtPdfium,在Linux环境下通常需要先安装一些必要的依赖包。这些依赖包包括但不限于构建工具链以及PDFium本身所需的头文件和支持库。 对于大多数Linux发行版来说,可以通过系统的包管理器来获取所需的基础环境。例如在Ubuntu上: ```bash sudo apt-get update && sudo apt-get install build-essential cmake git libjpeg-dev libpng-dev fontconfig ``` 这一步骤确保了后续编译过程中的基本需求得到满足[^2]。 #### 获取QtPdfium源码 接着从GitHub仓库克隆最新的QtPdfium版本到本地机器上: ```bash git clone https://github.com/fzyzcjy/qt_pdf.git cd qt_pdf ``` 这里假设使用的是`qt_pdf`这个项目作为代表性的QtPdfium实现之一[^3]。 #### 编译QtPdfium模块 进入下载下来的目录后,按照官方文档指示执行CMake命令来进行编译工作。如果希望生成静态链接库,则可以在调用cmake之前设置相应的选项变量;而对于动态链接的情况,默认行为通常是足够的。 ```bash mkdir build && cd build cmake .. make -j$(nproc) ``` 完成上述步骤之后应该能够在指定路径找到已编译好的共享对象(.so)或者是静态档案(.a),具体取决于所选的目标平台架构。 #### 将QtPdfium集成至Qt Creator项目中 创建一个新的Qt Widgets Application工程项目,修改`.pro`文件加入外部库定义语句以便让qmake识别新添加的组件位置关系: ```qmake QT += pdfium widgets gui core LIBS += -L/path/to/qtpdfium/build/lib/ -lpdfium INCLUDEPATH += /path/to/qtpdfium/src/include/ DEPENDPATH += /path/to/qtpdfium/src/include/ ``` 请注意替换实际路径以反映真实的文件系统布局情况。通过这种方式可以让IDE自动解析来自第三方扩展的所有符号引用。 #### 示例代码片段展示如何加载转换PDF页面为图像格式(QImage) ```cpp #include <QApplication> #include "qpdfdocument.h" #include "qpagedpaintdevice.h" int main(int argc, char *argv[]) { QApplication a(argc, argv); QPdfDocument doc; if (!doc.load("file:///home/user/Desktop/789.pdf")) return -1; QSizeF pageSize = doc.pageInfo(doc.firstPage()).size(); QImage img(pageSize.toSize(), QImage::Format_ARGB32); QPainter painter(&img); // Render the first page into an image. doc.renderToPainter(&painter, doc.firstPage()); painter.end(); img.save("/tmp/output.png"); return app.exec(); } ``` 这段程序展示了怎样利用QPdfDocument类读取给定地址处存储的一份PDF文档实例化对象,随后将其第一页的内容绘制在一个临时创建出来的空白画布之上最后保存成PNG图片形式输出[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值