首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Qt部署无法找到我的库,但ldd可以

问题描述:Qt部署无法找到我的库,但ldd可以。

解决方案:

  1. 确保库文件存在:首先,确保你的库文件确实存在于指定的路径中。可以使用命令ls或者文件管理器来检查库文件是否存在。
  2. 检查库文件路径:Qt在运行时需要正确的库文件路径。确保你的库文件路径已经正确设置。可以通过以下方式来设置库文件路径:
    • 在.pro文件中使用LIBS += -L/path/to/library来添加库文件路径。
    • 在代码中使用QCoreApplication::addLibraryPath("/path/to/library")来添加库文件路径。
  • 检查库文件依赖:库文件可能依赖其他的库文件。使用ldd命令可以检查库文件的依赖关系。确保所有依赖的库文件都存在,并且路径正确。
  • 检查库文件加载方式:Qt在加载库文件时有两种方式:静态加载和动态加载。静态加载是将库文件嵌入到可执行文件中,而动态加载是在运行时加载库文件。如果你使用的是动态加载方式,确保库文件在运行时可以被找到。
  • 检查库文件命名:库文件的命名规则可能会影响到Qt的加载。确保库文件的命名符合Qt的规范。一般来说,库文件应该以lib开头,并且以.so或.dll为后缀。
  • 检查Qt版本兼容性:库文件可能与Qt的版本不兼容。确保你使用的库文件与你的Qt版本兼容。可以查看库文件的文档或者官方网站来获取相关信息。
  • 检查编译选项:如果你是自己编译库文件,确保编译选项正确设置。特别是需要注意的是,编译选项应该与Qt的编译选项兼容。
  • 检查操作系统兼容性:库文件可能与操作系统不兼容。确保你的库文件与你的操作系统兼容。可以查看库文件的文档或者官方网站来获取相关信息。
  • 检查Qt部署方式:Qt有多种部署方式,包括静态链接、动态链接、打包等。确保你选择了正确的部署方式,并按照相应的方式进行部署。
  • 检查Qt的搜索路径:Qt在运行时会搜索一些默认的库文件路径。确保你的库文件路径在Qt的搜索路径范围内。可以通过QCoreApplication::libraryPaths()来查看Qt的搜索路径。

如果以上方法都无法解决问题,建议参考Qt官方文档、论坛或者向Qt社区寻求帮助。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

解决Ubuntu下使用linuxdeployqt打包Qt程序问题

为了避免编译好包运行时检测到我系统版本过高,不继续执行问题,我们编译前,将tools/linuxdeployqt/main.cpp中下述代码注释掉: // openSUSE Leap 15.0...打包 将Qt编译程序拷贝到一个单独文件夹中。 然后执行linuxdeployqt appname. 一般情况下会很顺利完成,当前目录下会有个Apprun,直接执行它就可以。...但是有时候并不是那么顺利,应该是系统中还缺少相应。比如,我遇到错误是: ERROR: Could not start patchelf....ensure that all libraries can be found by ldd....这表明我们系统中是缺少了libqjp2.so这个。其实很奇怪,本地明明是已经可以跑起来了,为什么还缺少这个文件。

4.4K20

不借助第三方工具打包QT程序

准备工作: 项目/可执行文件名:QTAppName 打包项目存放文件名:pack(这个文件名无所谓) 脚本名: copylib.sh(类似ldd命令):用于将.so文件依赖项复制并放入自动生成...获取Qt依赖 进入Qt安装目录,并将copylib.sh拷贝qtplatforms目录下(我目录:/opt/Qt/5.15.2/gcc_64/plugins/platforms)。...解决方案:该问题大概率是由libc(该是linux底层一个基本版本不一致导致可以使用以下命令查看libc版本 ldd --version 若是版本不一致可以尝试更新libc6,但是并不推荐该方法...//可以查看发行版本 问题二:依赖缺失 解决方案: 模块缺失在上文开始打包中仿照Qt依赖项获取,添加对应依赖即可 .so依赖缺失:使用ldd命令,查看依赖情况 ldd 依赖名.so...决方案: 模块缺失在上文开始打包中仿照Qt依赖项获取,添加对应依赖即可 .so依赖缺失:使用ldd命令,查看依赖情况 ldd 依赖名.so 尝试使用find查询打包主机上对应依赖项,并添加

21310
  • 23.QT记事本

    , 2.替换对话框实现 和查找对话框一样,只是多了一步替换功能,所以可以继承于查找对话框 3.Xml配置文件实现 配置文件用来保存程序最近一次运行退出前状态(比如:记事本字体,窗口位置,工具栏显示等...所以: 在启动主窗口构造函数时,读取配置文件 程序退出后,则在closeEvent()关闭事件函数里,将当前程序消息保存到配置文件里 4.双击文本打开Qt记事本实现 双击文件时,就会通过argc和argv...,名字以myapp.rc为例,添加内容: IDI_ICON1 ICON DISCARDABLE " QT.ico" 在项目pro后缀名文件中,添加以下代码 RC_FILE +...= app.rc 注意: myapp.rc和QT.ico最好放在源码根目录 6.应用程序打包与发布 发布程序时必须保证所有的依赖都存在 在Windous中,使用Depends工具查看依赖 在linux...中, 使用ldd (library dependencies)命令查看依赖 7.部署程序执行环境 通过一个安装程序来实现自动部署执行环境 windous下  installShield(收费,不开源)

    1.3K30

    Qt介绍及环境搭建

    QtQt发展与优势 什么是Qt Qt是一个跨平台应用程序和UI开发框架。使用Qt只需一次性开发应用程序,无须重新编写源代码,便可跨不同桌面和嵌入式操作系统部署这些应用程序。...网易云音乐(Linux版本 ldd查看) ? CCleaner(一个电脑清理软件,我常用来清理注册表) ?...面向对象 Qt 良好封装机制使得 Qt 模块化程度非常高,可重用性较好,对于用户 开发来说是非常方便。...支持 2D/3D 图形渲染,支持 OpenGL,大量开发文档、强大帮助系统 XML、数据支持...... Qt现在地位 未来由Qt来编写;使用Qt,构建您世界; ?...选择在D盘下qt文件夹下 ? 如果内存够的话全选也不是不可以(不建议) ? 一路next后安装就完事(静等5分钟) ?

    2.2K40

    错误 could not find or load the Qt platform plugin xcb 解决方案

    错误分析 部署软件时,没有将Qt插件文件下platforms中libqxcb.so部署上去 或者部署了部分Qt,但是该依赖其他丢失 总之就是Qt依赖或间接依赖在系统路径下找不到了...调试方法 在系统变量中加入 export QT_DEBUG_PLUGINS=1 这样再次运行程序时会报出Qt 错误信息 解决方案 查找到出问题 如果出问题不在,那就补足到系统LD_LIBRARY_PATH...路径 如果库存在,找到那个,运行命令: ldd 可以看到该依赖出问题在哪里,继续迭代地解决依赖问题 解决问题(示例) 由于库特别多,可能我们出问题不尽相同,但是思路是类似的,我以我面临问题为例记录解决方案...开启Qt debug后显示错误信息 Got keys from plugin meta data ("xcb") QFactoryLoader::QFactoryLoader() checking.../root/anaconda3/plugins/platforms/libqxcb.so 依赖 libXi.so.6 有问题 我们来到libqxcb.so 面前,查看他依赖情况: :~/anaconda3

    4.3K10

    Linux系统下实现QT程序打包发布

    linuxldd命令也可以查找可执行文件依赖,这个脚本功能和ldd命令功能一样,写成脚本是为了方便,查找之后就拷贝过来。...ldd命令使用方法示例: wbyq@wbyq:~/qt_code$ ldd build-ffmpeg_code-Desktop_Qt_5_12_6_GCC_64bit-Release/ffmpeg_code...为了发布过程不出现各种BUG,找不到、找不到平台等等一系列问题,现在使用一个笨办法。 将QT使用编译器目录下所有拷贝到camera_linux_app目录下,有覆盖就不管。...接下来就可以将这个打包文件拷贝到其他没有QT环境电脑上解压运行了。 运行时候,执行(camera_linux_app)目录下脚本文件(ffmpeg_code.sh)即可。...这样打包占用空间比较大,拷贝了很多没有用到,但是不会出现各种缺失问题。。

    7.9K41

    Linux下Qt创建共享与链接共享详解

    随着程序写逐渐变多,或多或少我们都会使用别人写好;或者我们不想让别人看到我一些核心程序,可以将核心程序封装成。...本次和大家分享是在Ubuntu下使用Qt生成共享以及在Qt中链接共享方法。 共享是在Linux下称呼,在Windows下被称为动态。...之后文章会进行总结说明。 程序平台:Ubuntu14.04、 Qt5.5.1 一、Qt 创建共享 1. 创建类型为Qt工程 ① 新建工程-> Library -> C++ : ?...④生成动态效果 到这里我们就已经生成好了动态可以看下我们添加动态版本号。 注意,我这里没有区分Debug与Release版本。 ? 二、链接动态 1....上面的错误是在运行时没有找到共享,在Linux下,可以使用 ldd命令查看一个可执行程序所需,效果如下: ? 2. 为什么在Qt中运行没有报上面的错误?

    5.7K20

    静态编译Qt5.5并应用成果

    静态编译Qt5.5并应用成果 一直为打包Qt开发东东依赖发愁。只好研究下静态编译,当然选个最新版本。...\bin; ::配置依赖,mingw可能需要您手动加上和头文件位置,vs的话您可以打开相应VS* X86/64 本机命令提示符 ::set SQLITE3SRCDIR=%THIRDPARTY_DIR...你要那些lib已经OK了,你可以部署时候再用他们。 当然,你可以坚持原因,nmake install成功。 注意,不要轻易改变源码位置,或节省空间删除它。否则,上帝保佑你。...后记: 以为装了Qt5addin,打开就可以看到Qt5菜单,错了,还要真的装个Qt sdk才行。 Qtcreator静态编译了一下,的确可用,但是无法部署到同为32xp下。...大胆Qt吧,一次编写,到处部署(很方便) 发布于 2015年4月3日作者 resumeadmin分类 Qt、利器与技巧标签 Qt5、qt5addin、vs2012、xp部署、静态编译 《静态编译

    29040

    Win11系统下MindSpore环境搭建

    配置完成后,可以在Docker桌面版设置-资源中,找到我们使用WSL子系统: 然后在WSL中添加docker专用用户组,就可以开始拉取远程镜像了: 这里我们拉取是一个MindSpore2.2.14...Containers: 还有Docker扩展: 安装完成后,可以在这个Docker扩展中找到我们已经启动容器镜像mindsponge:latest 然后选择相应镜像,Attach到VSCode编程环境中...(例如silx)时候,有可能出现一些找不到相关lib报错,此时需要打开QTdebug选项,确认清楚QT软件无法使用原因: export QT_DEBUG_PLUGINS=1 如果遇到一些明确报错说...就可以使用apt install libxxx-1来安装相关软件。当然,这些相关操作可以直接保存到镜像中,或者是通过修改Dockerfile来直接构建一个可用QT基础镜像。...这种方案既可以实现Linux系统编程以及部署便捷性,又可以兼顾Windows系统强大办公软件生态,甚至还可以借助Docker达到一定软件可迁移性和可复制性。

    15410

    linux ldd命令源代码,Linux中ldd命令用法详解

    -d –data-relocs  执行符号重部署,并报告缺少目标对象(只对ELF格式适用) -r –function-relocs  对目标对象和函数执行重新部署,并报告缺少目标对象和函数(只对ELF...ldd可以获得共享文件,其实是通过读取ldconfig命令组建起来文件(/etc/ld.so.cache)。 默认共享文件搜索/lib优先于/usr/lib,而且也只有这个2个目录。...一般ld-linux.so会按照以下顺序搜索共享: 1、DT_RPATH或DT_RUNPATH段 2、环境变量LD_LIBRARY_PATH 3、/etc/ld.so.cache文件中路径,如果可执行程序在连接时候添加了...描述 ldd 输出在命令行上指定每个程序或共享需要共享。...–function-relocs 对目标对象和函数执行重新部署,并报告缺少目标对象和函数(只对ELF格式适用) –help 用法信息 ldd标准版本与glibc2一起提供。

    3.3K20

    在全志V853开发板试编译QT测试

    记录一下自己交叉编译QT过程,目前来说再体验了初次编译镜像之后,编译这个QT还是算比较快捷,因为该有的都安装完成了。...首先就是我需要找到我交叉编译器安装位置,这个在下载了Tina之后还是很好找。...我们用一般就是这个,我们可以把其路径加到我们系统环境中,这样在编译QT时候就比较简单了。 一般我是直接加到/etc/profile下,这样重启后就有了。...rootfsbuilt/arm/toolchain-sunxi-musl-gcc-830/toolchain/arm-openwrt-linux-muslgnueabi 这段要再配置前执行,这段是为了交叉编译器文件...这样我们可以直接挂载然后使用。这个目的是因为有些。So文件无法解压

    21610

    【Linux操作系统】程序编译和动静态链接

    E:开始翻译,并且在预处理后停下来 -o:指明形成临时文件名称 通过这里我们可以看到预处理后还是C语言代码,预处理完成只是文本操作!...ps:这里不带-o是不行,程序停下来后会将预处理后文件内容直接打印到终端 通过-o生成.i文件我们可以清晰看到头文件展开后结果是一堆函数和变量声明,并没有函数具体实现!...1.动态链接 动态链接方式:在运行时需要去标准库里函数实现 优点:形成可执行程序体积小 缺点:依赖动态,易收到动态丢失等原因出现运行时错误!...gcc test.c -o test//Linux-默认是动态链接链接方式 file 可执行程序 ldd 可执行程序 //在linux中, ldd是list dynamic dependencies缩写...)//动态->位置(代码地址) 2.静态链接 静态链接方式:在链接时直接将函数实现拷贝一份到我程序中,运行时不用!

    1.2K30

    Qt:windows下Qt安装教程

    official_releases 正式发布版,是与开发版相对稳定版 Qt 和开发工具(可以下载Qt开发环境和源代码) ministro 迷你版,目前是针对 Android 版本。...make 生成器,可以根据 makefile 文件自动编译链接生成可执行程序或文件。 gdb 调试器,用于调试可执行程序。 ldd 查看可执行文件依赖共享(扩展名 .so,也叫动态链接)。...另外 MinGW 里也没有 ldd 工具,因为 Windows 不使用 .so 共享文件。...所以MinWG官方又推出了MSYS(Minimal SYStem),相当于是一个部署在Windows系统中小型Unix系统环境,移植了很多Unix/Linux命令行和配置文件等,是对MinGW扩展。...assistant Qt 助手,帮助文档浏览查询工具,Qt 所有模块和开发工具帮助文档、示例代码等都可以检索到,是 Qt 开发必备神器,也可用于自学 Qt

    5.7K20

    基于QTwebkit与ExtJs开发CBS结构企业应用管理系统

    幸运QT界面为我们做了这些工作,QT中包含webkit浏览器控件,并且这个C++是跨平台,也就是说基于这几项技术开发CB/S企业应用可以部署在Linux系统内。    ...除了使用QT界面,还可以选择gtk+和wxWidgets两个界面,而且这两个界面都对WebKit做过包装,但是从开发方式,生产效率,运行速度等多方面考虑,还是QT最为合适。    ...虽然我们可以成功在Qt Creator内编译并成功执行程序,到windows目录下通过双击执行编译出exe程序,就不能正常运行,这是因为可执行程序所需动态链接并没有与可执行程序在同一个目录内,至于可执行程序依赖哪些动态链接...appFolder指定路径下sys目录下menuTree.js文件。...如此数量众多dll,都需要打包到我们最终安装程序中去吗?当然不用这么做。

    3.4K80

    linux动态和静态使用_静态使用

    在Linux下,我们可以通过ldd 文件名来查看一个可执行程序所依赖文件。...优点: 节省磁盘空间,且多个用到相同动态程序同时运行时,文件会通过进程地址空间进行共享,内存当中不会存在重复代码。 缺点: 必须依赖动态,否则无法运行。...因为我们使用gcc编译是C语言,而gcc就是用来编译C程序,所以gcc编译时候默认就是C此时我们要链接是哪一个编译器是不知道,因此我们还是需要使用-l选项,指明需要链接文件路径下哪一个...,我们可以使用ldd命令进行查看。...此时我们用ldd命令查看可执行程序时,发现系统还是没有找到该可执行程序所依赖动态

    4.8K20

    怎样在 Linux 中使用动态和静态

    为了检查一个应用在启动时需要哪些,你可以使用 ldd 命令,它会打印出给定文件所需动态: $ ldd my_app linux-vdso.so.1 (0x00007ffd1299c000...在本例中,正确版本就在这个目录下,所以你可以导出它至环境变量: $ LD_LIBRARY_PATH=$(pwd):$LD_LIBRARY_PATH $ export LD_LIBRARY_PATH 现在动态链接器知道去哪了...你可以再次执行 ldd 去调用动态链接器,它会检查应用依赖然后加载进内存。...unset LD_LIBRARY_PATH sudo cp libmy_shared.so /usr/lib64/ 当你运行 ldd 时,你现在可以看到归档路径被展示出来: $ ldd my_app...Linux 家族 32 位:/usr/lib32 64 位:/usr/lib64 FreeBSD(技术上来说不算 Linux 发行版) 32 位:/usr/lib32 64 位:/usr/lib 知道去哪这些关键可以链接失效问题成为历史

    2K21

    ColddBox 靶场

    突破口 渗透这类 CMS 网站时,不要上来就狂扫,它大部分目录都是固定,开源去看对应版本,商业几篇文章。特别 注意是一定先去找对应版本漏洞,不要自己手工测基本行不通。...图片 从收集到信息里可以找到这个登入口,基于之前 Wordpress 渗透经验登入口是可以爆破,渗透过程要记住 每个可能点都要去尝试,都尝试一遍后没结果继续深入尝试。...使用 Wordpress 专用扫描探测工具 wpscan ,从结果里可以看出枚举出三个用户,密码未知。工具怎么知道这几 个账户存在,这是基础漏洞,在金融、银行等大公司这个漏洞是致命。...上面两个提示可以判断出用户是否存在,这几乎是开发人员最容易忽视问题,在注册、找回密码和登入等涉及用户接口非常常⻅。 打点 开始爆破登入接口,还是使用 wpscan 工具,也可以用bp。...specified www-data@ColddBox-Easy:/$ sudo -l sudo -l [sudo] password for www-data: 找到 Wordpress 配置信息,看下数据用户名和密码是否与系统账户重合

    95410

    go语言学习-初识

    特点 相比于其他语言,它有以下特点(内容来源于网络): 可直接编译成机器码,不依赖其他,便于部署 语言层面支持并发 丰富标准 内置runtime,支持垃圾回收 内置强大工具,gofmt工具统一了编码风格...第一个声明了当前文件位于main包 第二行导入了fmt包,导入之后就可以使用包中接口了 第三行定义了main函数,这个与其他编程语言类似,没有返回类型 第四行使用了fmt包中Println函数打印了...还需要注意是: 缺少了必要包或者导入了不需要包,程序都无法编译通过 import声明必须跟在文件package声明之后 main包特殊,它定义了一个独立可执行程序 每行程序结束后不需要撰写分号...命令看到: $ ldd hellogo not a dynamic executable $ ldd helloc linux-vdso.so.1 => (0x00007ffcffbe2000...这不禁让我们想到开始所说go程序便于部署。由于不需要依赖其他动态,go程序能够很方便在机器上部署。 关于静态和动态优劣不在本文讨论范围之内。

    35210
    领券