[Seek Help] qt程序打包依赖到底放到那个文件中,才能打包成功?
Tofloor
poster avatar
deepin-chinaren
deepin
2022-09-23 02:24
Author

qt程序打包依赖到底放到那个文件中,才能打包成功?在网上搜了一些方法试了都不行

Reply Favorite View the author
All Replies
寂静的羽夏
deepin
2022-09-23 02:50
#1

请问你是啥依赖?如果是包管理就能安装的,可以在 control 文件里写明,如果是自定义的依赖,就需要放到 LD_LIBRARY_PATH 环境变量下,默认的在 /usr/lib 目录。

Reply View the author
deepin-chinaren
deepin
2022-09-23 03:01
#2
寂静的羽夏

请问你是啥依赖?如果是包管理就能安装的,可以在 control 文件里写明,如果是自定义的依赖,就需要放到 LD_LIBRARY_PATH 环境变量下,默认的在 /usr/lib 目录。

用ldd提取的依赖,以及插件依赖

Reply View the author
deepin-chinaren
deepin
2022-09-23 03:05
#3
寂静的羽夏

请问你是啥依赖?如果是包管理就能安装的,可以在 control 文件里写明,如果是自定义的依赖,就需要放到 LD_LIBRARY_PATH 环境变量下,默认的在 /usr/lib 目录。

依赖库都放到系统usr/lib下,卸载时会不会影响其他程序呢?

Reply View the author
寂静的羽夏
deepin
2022-09-23 03:57
#4
deepin-chinaren

用ldd提取的依赖,以及插件依赖

正常的话是不影响的,但我没实验过。


请问程序是你写的吗?

如果是你写的,那就好说了,如果仅考虑 Deepin ,你依赖了 DTK 和 QT,这个就不需添加,因为这个是 Deepin 系统一定会带有的依赖,就不需打包加入。如果你没加入其他的依赖,编译之后的依赖基本每个 linux 系统都会带的,可能版本不一致会运行不起来,不过这个只能更新系统内核部分,不算是程序的问题。

如果假设你编写的软件依赖 python3 ,但 apt 包管理有,那就只需在 control 文件写明即可。

如果你自己编写了一个 so 文件,就需要把它放到我所说的位置。所以,如果重用度不高,能静态就静态(如果有协议请遵守),linux 不像 win 拖着 dll 到处跑,不过你可以使用动态加载的方式。

如果使用 QT 自己设计的插件机制,这个就随便了,因为是动态加载的。


我写过类似的项目,你可以到我发的帖子看看,除了我的插件是单独的 so 文件(QT插件机制,你或许看到是另一个名字,但本质是 so 文件),其余的我都会通过静态链接的方式进行,避免杂七杂八的依赖问题。

Reply View the author
depend
deepin
2022-09-23 05:01
#5
deepin-chinaren

依赖库都放到系统usr/lib下,卸载时会不会影响其他程序呢?

要看你的依赖是否都是当前环境编译的,打appimage包挺好

Reply View the author