最近一个跨平台的项目打包折腾的够呛,所以记录一波。
ldd 应用程序名
可以查看该应用程序名下面的所有依赖库,所以该命令很重要。网上有人利用该命令去导出所以依赖库,附代码如下:
#!/bin/sh
exe="./appname"
#发布的程序名
des="/home/myname/Qt5.9/"
#目标路径
deplist=$(ldd $exe | awk '{if (match($3,"/")) { printf("%s "),$3 } }')
cp $deplist $des
看上去很完美,当程序依旧运行不了的时候,才发现人家的东西毕竟不是自己的,所以追本溯源才是重要的。根据程序报错来解决呗。
1.报错QT_5库no found:
进入开发机的qt安装目录如:/opt/qt5.9.4/5.9.4/gcc_64/(本人是64位系统),几个目录简要说明:
bin/ 属于qt的一些运行文件如qmake,moc,designer等等
(附加说明一下,该目录下有一个qt.conf文件,该文件是用来指定程序路径结构的)
include/ 包含了所有qt的头文件
doc/ 帮助文档等
translation/ qtcreate支持的所有语言语种
mkspecs/ qt支持的所有编译器
phrasebooks/ qt常用语手册,多国语言
qml/ qml相关
lib/ 所有qt程序依赖库