Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/129.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 我可以在忽略Qt'的情况下编译Qt应用程序吗;什么是打包库?_C++_Qt_Linker - Fatal编程技术网

C++ 我可以在忽略Qt'的情况下编译Qt应用程序吗;什么是打包库?

C++ 我可以在忽略Qt'的情况下编译Qt应用程序吗;什么是打包库?,c++,qt,linker,C++,Qt,Linker,我正在尝试在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.6

我正在尝试在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
随后是对库中函数的几个未定义的引用。我仔细检查了系统中所有的
libicu*
版本,只能找到版本60;直到我在我的Qt安装目录下查看了
Qt/5.10.0/gcc_64/lib
,我才意识到Qt提供了版本56的库文件


我对链接器相关的问题不太感兴趣。有没有可能让编译器忽略Qt提供的库,只链接到我系统上已有的版本60 libs?如果没有,我的解决方案是什么?

Qt/(…)/lib之前定义v60 libs的顺序在变量中。如果您使用的是
bash
shell,请在通过运行更改
PATH
变量后刷新它。

Qt/(…)/lib之前定义v60 libs的顺序在变量中。如果您使用的是
bash
shell,请在通过运行更改
PATH
变量后刷新它。

是和否

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

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

您问题的根源可能是您使用了Qt公司提供的Qt软件包。这些包是为与大多数Linux发行版一起工作而构建的,但它们不能100%兼容

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

是和否

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

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

您问题的根源可能是您使用了Qt公司提供的Qt软件包。这些包是为与大多数Linux发行版一起工作而构建的,但它们不能100%兼容

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

我认为对我来说,最好的长期解决方案是从源代码构建Qt,因为我将在今后的许多其他事情中使用它。谢谢你的信息!我认为对我来说,最好的长期解决方案是从源代码构建Qt,因为我将在今后的许多其他事情中使用它。谢谢你的信息!