[Seek Help] qt版本问题
Tofloor
poster avatar
miaoys
deepin
2023-01-31 02:36
Author

在学习qt开发,在deepin的环境(Qt version 5.15.6)做了个小程序,如何在uos环境(Qt version 5.11.3)运行,目前报错:

image.png

需要打包的时候把所有依赖库都打进去么,或者还有其他方法没?

Reply Favorite View the author
All Replies
寂静的羽夏
deepin
2023-01-31 02:41
#1

可以在 UOS 重新编译一遍

Reply View the author
miaoys
deepin
2023-01-31 02:47
#2
寂静的羽夏

可以在 UOS 重新编译一遍

假设uos的qt版本后来升级了,那是不是又得重新打包了?

Reply View the author
gfdgd_xi
deepin
Ecological co-builder
2023-01-31 02:50
#3
miaoys

假设uos的qt版本后来升级了,那是不是又得重新打包了?

应该不用

Reply View the author
SamLukeYes
deepin
2023-01-31 05:14
#4
miaoys

假设uos的qt版本后来升级了,那是不是又得重新打包了?

共享库更新的时候依赖它的包需要 rebuild 是很正常的事情。不过非滚动发行版一般会保持 abi 稳定,可以等大版本更新的时候再重新打包。

Reply View the author
Feng Yu
deepin
2023-01-31 10:30
#5

你的系统依赖版本都变了肯定要重新编译打包的,不可能一个二进制包通吃的,多多少少都需要针对不同系统做一些调整。

你要想更通用点,可以考虑静态编译或者AppImage这种连依赖一并bundle,不直接依赖系统类库

Reply View the author
fuuko
deepin
2023-01-31 16:47
#6

等玲珑,或者appimage,或者docker

Reply View the author
depend
deepin
2023-01-31 17:48
#7

这中兼容性是普片存在的,如果你在uos上编译(qt5.11.3),大概率是能在更高版本qt环境下使用的,但是他不能再低版本使用,这也是很多厂商选在在低版本下编译的原因。但是使用了qt private中的组件(不保证abi兼容性)就只能在当前版本qt环境下使用,如果不是,那就可以在高版本运行,即在uos编译,可以再uos和deepin运行,在deepin编译不能再uos运行

Reply View the author
depend
deepin
2023-01-31 17:50
#8
depend

这中兼容性是普片存在的,如果你在uos上编译(qt5.11.3),大概率是能在更高版本qt环境下使用的,但是他不能再低版本使用,这也是很多厂商选在在低版本下编译的原因。但是使用了qt private中的组件(不保证abi兼容性)就只能在当前版本qt环境下使用,如果不是,那就可以在高版本运行,即在uos编译,可以再uos和deepin运行,在deepin编译不能再uos运行

上面几层的朋友也提到了,appimage打包(将qt版本对应组件打入包中)和docker,flatpak打包这种,都是来解决兼容性问题的,基本上要把所有的需要环境都打入包中,同时增大体积,deb包这种应该不行(个人理解)

Reply View the author
沈拙言
deepin
2023-01-31 21:10
#9
Reply View the author
zccrs
deepin
2023-01-31 21:55
#10

因为deepin上的Qt版本比uos上的高,所以deepin上编译的到uos上不能用。不过反过来一般是可以的,比如在uos上编译后复制到deepin上用。

Reply View the author
zccrs
deepin
2023-01-31 21:56
#11

另外说一下,“玲珑”就是为了解决这种困境的,无论在哪里编译的,都可以在支持玲珑的系统上运行。

Reply View the author
miaoys
deepin
2023-02-01 01:51
#12
zccrs

另外说一下,“玲珑”就是为了解决这种困境的,无论在哪里编译的,都可以在支持玲珑的系统上运行。

好的,感谢,学习了

Reply View the author
miaoys
deepin
2023-02-01 01:51
#13
depend

上面几层的朋友也提到了,appimage打包(将qt版本对应组件打入包中)和docker,flatpak打包这种,都是来解决兼容性问题的,基本上要把所有的需要环境都打入包中,同时增大体积,deb包这种应该不行(个人理解)

好的,感谢,学习了

Reply View the author
miaoys
deepin
2023-02-01 01:51
#14

感谢!

Reply View the author