xbsdgx2021 2024-12-19 15:55 采纳率: 0%
浏览 329
已结题

全志嵌入式开发板上QT程序运行异常解决

自己开发了一个QT程序,运行时需要调用多个第三方共享库,在运行此程序时报错: error while loading shared libraries: /usr/local/Qt_5.12.5/lib/libavs.so.0: internal error。

1.1 已将第三方库拷贝至开发板并配置了环境变量,不存在库找不到的问题;

1.2 已确认此库文件版本(ELF 32-bit LSB shared object, ARM, EABI5 version 1 (GNU/Linux))与开发板匹配;

1.3 删除某一个库的引用后,继续提示下一个库的错误,错误是一样的,都是加载共享库时发生内部错误。

2、运行环境:

全志T113i开发板,操作系统:Linux myd-yt113-i 5.4.61+ #11 SMP PREEMPT Sat Nov 23 08:56:24 CST 2024 armV7l GNU/Linux。

请帮我解决这个问题,使得程序可以正常运行。

  • 写回答

52条回答 默认 最新

  • 檀越@新空间 2024-12-19 15:56
    关注
    获得5.00元问题酬金

    下午好🌅🌅🌅
    本答案参考通义千问

    根据你的描述,问题主要集中在QT程序运行时加载第三方共享库失败上。尽管已经确认了库文件存在、版本匹配等基本条件,但仍然遇到了“internal error”。这类问题通常与以下因素有关:库文件损坏、库间依赖关系不正确、系统兼容性问题等。下面是一些可能的解决方案:

    1. 检查库文件完整性

    确保所有涉及的库文件没有损坏。可以尝试重新编译或从可靠来源重新下载这些库。

    2. 使用ldd检查依赖关系

    使用ldd命令来查看你的可执行文件及其依赖项是否都正确链接到了预期的库版本。

    ldd /path/to/your/executable
    

    这可以帮助你发现是否有任何缺失或错误版本的依赖库。

    3. 确认动态链接器配置

    检查/etc/ld.so.conf和相关目录下的配置文件(如/etc/ld.so.conf.d/),确保它们包含了包含所需库的所有路径。之后运行:

    sudo ldconfig
    

    以更新动态链接器缓存。

    4. 调试信息收集

    如果上述步骤未能解决问题,考虑启用更详细的调试输出。可以通过设置环境变量来获取更多关于加载失败的信息:

    export LD_DEBUG=all
    ./your_executable
    

    这将打印出非常详细的日志,有助于定位具体哪个环节出了问题。

    5. 库文件权限

    确认所有相关的库文件都有正确的读取权限,并且由适当的用户拥有。你可以通过如下命令更改文件权限:

    chmod 755 /usr/local/Qt_5.12.5/lib/libavs.so.0
    

    6. 兼容性检查

    虽然你提到库版本看起来是匹配的,但仍建议验证一下开发板上的glibc或其他关键库的版本是否支持你所使用的共享库。有时即使是相同架构下,不同版本之间的细微差异也可能导致问题。

    7. 尝试静态编译

    作为最后手段,考虑将某些或全部外部库静态地编译进你的应用程序中。这样可以避免运行时寻找共享库的问题,但会增加二进制文件大小,并可能影响性能。

    按照以上步骤逐一排查,应该能够帮助定位并解决当前遇到的问题。如果还有其他特定错误消息,请提供详细信息以便进一步分析。

    评论

报告相同问题?

问题事件

  • 系统已结题 12月27日
  • 创建了问题 12月19日