gpt4 book ai didi

c++ - 我可以在忽略 Qt 的打包库的同时编译 Qt 应用程序吗?

转载 作者:行者123 更新时间:2023-11-28 04:50:44 24 4
gpt4 key购买 nike

我正在尝试在 Antergos Arch Linux 中编译 Qt 应用程序,该应用程序使用了 icu 相关的库。当我收到以下链接器错误时,我有点困惑:

/usr/bin/ld: warning: libicuuc.so.60, needed by /usr/lib/libxml2.so.2, may conflict with libicuuc.so.56
/usr/bin/ld: warning: libicudata.so.60, needed by /usr/lib/libicuuc.so.60, may conflict with libicudata.so.56

这些之后是对库中函数的几个 undefined reference 。我仔细检查了我系统上所有的 libicu* 版本,但只能找到版本 60;直到我查看我的 Qt 安装目录,在 Qt/5.10.0/gcc_64/lib 下,我才意识到 Qt 提供了版本 56 的库文件。

我对链接器相关的问题不是那么热衷。是否可以让编译器忽略 Qt 提供的库,只链接我系统上已有的 60 版库?如果没有,我有哪些解决方法?

最佳答案

是也不是。

理论上 Qt 可以简单地使用 v60 而不是 v56 icu 库,前提是这两个版本是二进制兼容的。

但是,Qt 库特别需要 icu 库的版本 56。您还尝试使用 libxml,它需要 60 版的 icu 库。这意味着您同时需要版本 56 和 60,这是不可能的,因为您最终会遇到符号冲突。

你问题的来源很可能是你使用了Qt公司提供的Qt包。此类软件包适用于大多数 Linux 发行版,但不能 100% 兼容。

解决方案是使用使用相同版本的 icu 库的 Qt 和 libxml 构建。最简单的解决方案是使用 Linux 发行版提供的 Qt 库。另一种解决方案是从源代码构建 Qt。

关于c++ - 我可以在忽略 Qt 的打包库的同时编译 Qt 应用程序吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48270402/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com