发布一个使用phonon库的程序,需要带上什么东西?

bayerfly 2011-12-08 01:40:25
在ubuntu下,小弟使用phonon做了个简单的音视频播放程序,在本机上正常执行,带上了libphonon.so的动态库和后端phonon_backend,下边两个插件libphonon_gstreamer.so和phonon_xine.so,在一架安装了媒体播放器插件的机子上播放不了视频,不知道还需要怎么办?
...全文
239 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiachm 2011-12-09
  • 打赏
  • 举报
回复
只要你在deb包头中声明你所直接依赖的包的名字,apt-get在安装你的包时,会自动检查目标机器上是否安装了这些包,如果没有的话,它会去网上的仓库中帮你拷贝一份下来,并首先把它们装上。装上了它们,你所需要的.so也就自然的存在了。

当然,如果在安装这些包时发现它们也存在不能满足的依赖关系,那么apt-get将递归的为其解决依赖。

也就是说,apt-get会追踪包间依赖关系,为你搞定一切。
bayerfly 2011-12-09
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 xiachm 的回复:]

如果是这样,建议楼主把程序打包成deb的形式。查出usr/lib下的那些库是属于那个包的,然后在你的deb包中声明这些依赖关系。

夸张一点的说,世界上没有两台Linux环境是一样的,而且包和包之间的依赖关系特别复杂,不要奢望你的程序所依赖的包,以及这些包所依赖的包,在其它机器上一定存在。

而yum或apt-get会帮你解决这些依赖关系,条件只有一个,把你的程序打包成rpm或deb
[/Quote]
非常感谢你的回答。
deb不是制作安装包吗?安装能够改变libphonon_gstreamer.so的依赖关系吗?
对了,一个动态库的依赖关系从这个库到另一个库,不知道怎么改变?
我的程序发布的时候是export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:库的路径。才认到自己的库的,但一个动态库的临时依赖怎么改变?
xiachm 2011-12-09
  • 打赏
  • 举报
回复
如果是这样,建议楼主把程序打包成deb的形式。查出usr/lib下的那些库是属于那个包的,然后在你的deb包中声明这些依赖关系。

夸张一点的说,世界上没有两台Linux环境是一样的,而且包和包之间的依赖关系特别复杂,不要奢望你的程序所依赖的包,以及这些包所依赖的包,在其它机器上一定存在。

而yum或apt-get会帮你解决这些依赖关系,条件只有一个,把你的程序打包成rpm或deb
bayerfly 2011-12-09
  • 打赏
  • 举报
回复
我ldd了下libphonon_gstreamer.so,它的依赖在usr/lib/下边的库,与自己程序的依赖库不同,不知道是不是这个原因?
bayerfly 2011-12-09
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 xiachm 的回复:]

1. 先确保在你的应用程序目录中有一个phonon_backend目录。

2. 在你的机器上,把QtSDK的安装目录改个名,此时你的程序一定不能运行。这说明相关的库应该都在这个目录下,然后逐个目录的尝试,这样就可以把需要的库锁定在一个很小的范围内。
[/Quote]
可是qmake也在这个目录下边。。。。。。
这样连编译都不行。
bayerfly 2011-12-09
  • 打赏
  • 举报
回复
找到问题了,原来是没有带上libopengl。。。谢谢LS。
xiachm 2011-12-08
  • 打赏
  • 举报
回复
1. 先确保在你的应用程序目录中有一个phonon_backend目录。

2. 在你的机器上,把QtSDK的安装目录改个名,此时你的程序一定不能运行。这说明相关的库应该都在这个目录下,然后逐个目录的尝试,这样就可以把需要的库锁定在一个很小的范围内。
bayerfly 2011-12-08
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 xiachm 的回复:]

引用 5 楼 bayerfly 的回复:

引用 2 楼 xiachm 的回复:

应该还是缺库吧,尝试在目标机器上编译一次看看。

在目标机器编译什么??

编译你的程序
[/Quote]

那还需要安装qt啊,这样还是找不到缺失的是什么。
xiachm 2011-12-08
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 bayerfly 的回复:]

引用 2 楼 xiachm 的回复:

应该还是缺库吧,尝试在目标机器上编译一次看看。

在目标机器编译什么??
[/Quote]
编译你的程序
bayerfly 2011-12-08
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 xiachm 的回复:]

应该还是缺库吧,尝试在目标机器上编译一次看看。
[/Quote]
在目标机器编译什么??
bayerfly 2011-12-08
  • 打赏
  • 举报
回复
主要是视频播放不了,声音还是正常的。真是奇怪。。。
bayerfly 2011-12-08
  • 打赏
  • 举报
回复
提示是这样的:

WARNING: Phonon needs QCoreApplication::applicationName to be set to export audio output names through the DBUS interface
Connecting to deprecated signal QDBusConnectionInterface::serviceOwnerChanged(QString,QString,QString)
QMetaObject::invokeMethod: No such method KUniqueApplication::loadCommandLineOptionsForNewInstance()
kbuildsycoca4 running...
params.c:OpenConfFile() - Unable to open configuration file "/home/cx/.smb/smb.conf":
没有那个文件或目录
params.c:OpenConfFile() - Unable to open configuration file "/home/cx/.smb/smb.conf.append":
没有那个文件或目录


不过我在自己机子上也是报这些警告。
xiachm 2011-12-08
  • 打赏
  • 举报
回复
应该还是缺库吧,尝试在目标机器上编译一次看看。
刀刀亮 2011-12-08
  • 打赏
  • 举报
回复
没有什么提示么?比如提示你少什么文件什么的?是不是动态库没有考进去啊?

16,215

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧