移植phonon到arm(续 ARM Linux平台环境搭建-QT SDK编译)

本文详细记录了将交叉编译的phonon库移植到ARM Linux平台的过程,包括解决phonon backend plugin加载问题,选择使用mplayer作为解决方案,编译并集成phonon_mplayer,调整编译器选项,以及遇到的播放失败但建立连接的问题。尽管有部分进展,但最终发现可能缺少前端播放器,计划后续尝试安装Mplayer。
摘要由CSDN通过智能技术生成

移植交叉编译过的phonon库

qt源码编译后,将对应的QT目标文件夹下lib文件夹中的
以libphonon开头的几个文件打包压缩,复制到arm板对应的QT文件夹中lib目录下

测试qt程序,让qt程序播放一个mp4文件
报错:
phonon backend plugin could not be loaded

原因是plugins文件夹缺少相应的phonon_backend

查找解决方案

安装播放插件有两种解决方案:
1.使用gstreamer
2.使用mplayer
看了大家的经验选择使用mplayer

下载phonon_mplayer
git clone git://anongit.kde.org/phonon-mplayer
之后进入文件夹
cmake . -DCMAKE_C_COMPILER=arm-linux-gcc -DCMAKE_CXX_COMPILER=arm-linux-g++
生成Makefile
并将得到phonon_mplayer.so文件,放到Qt安装路径的/plugins/phonon_backend/目录下

接下来, 再使进入到QT源文件夹下对应的phonon文件夹,编译Qt源文件下的phonon模块,这时会自动根据phonon_mplayer.so编译适合mplayer插件的phonon

将编译好的libphonon.lalibphonon.so、libphonon.so.4、libphonon.so.4.3 、 libphonon.so.4.3.1模块复制到目标板Qt安装路径的lib目录下

进入/phonon-mplayer/mplayer执行
qmake
make(如不是第一次make,执行make clean)

此时观察输出,如发现使用的编译器是gcc或g++,择编译器使用的不正确,一般会编译不成功,出现如下字样

/usr/bin/ld: skipping incompatible /usr/local/freescale/qt4.8.5/lib/libphonon.so when searching for -lphonon
/usr/bin/ld: skipping incompatible /usr/lib/gcc/i686-linux-gnu/4.6/…/…/…/…/lib/libphonon.so when searching for -lphonon
/usr/bin/ld: skipping incompatible /usr/lib/…/lib/libphonon.so when searching for -lphonon
/usr/bin/ld: skipping incompatible /usr/lib/gcc/i686-linux-gnu/4.6/…/…/…/libphonon.so when searching for -lphonon
/usr/bin/ld: skipping incompatible /usr/lib/libphonon.so when searching for -lphonon
/usr/bin/ld: cannot find -lphonon
/usr/bin/ld: skipping incompatible /usr/local/arm/tslib/lib/libts.so when searching for -lts
/usr/bin/ld: cannot find -lts
collect2: ld returned 1 exit status
make: *** [phonon_backend/libphonon_mplayer.so] Error 1

此时是makefile中编译器选项的问题 查看目录下的Makefile文件确实配置有问题
cc=gcc
cxx=g++
。。。
手动修改makefile(主要看开头)
如果说找不到QT的什么文件,可以修改对应的include路径和lib路径

#############################################################################
# Makefile for building: libphonon_mplayer.so
# Generated by qmake (2.01a) (Qt 4.8.1) on: Wed Dec 26 16:41:35 2018
# Project:  phonon_mplayer.pro
# Template: lib
# Command: /usr/bin/qmake -o Makefile phonon_mplayer.pro
#############################################################################

####### Compiler, tools and options

CC            = arm-none-linux-gnueabi-gcc
CXX           = arm-none-linux-gnueabi-g++
DEFINES       = -DQT_WEBKIT -DPHONON_MAKE_QT_ONLY_BACKEND -DQT_NO_DEBUG -DQT_PLUGIN -DQT_PHONON_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED
CFLAGS        = -pipe -O2 -D_REENTRANT -Wall -W -fPIC $(DEFINES)
CXXFLAGS      = -pipe -O2 -D_REENTRANT -Wall -W -fPIC $(DEFINES)
INCPATH       = -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/local/freescale/qt4.8.5/include -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4/phonon -I/usr/include/qt4-I/usr/include/qt4/phonon_compat -I.
LINK          = arm-none-linux-gnueabi-g++
LFLAGS        = -Wl,-O1 -shared
LIBS          = $(SUBLIBS)   -L/usr/local/freescale/qt4.8.5/lib -lphonon -L/usr/local/arm/tslib/lib -L/usr/lib/i386-linux-gnu -lQtNetwork -lts -lQtGui -lQtCore -lpthread 
AR            = arm-none-linux-gnueabi-ar
RANLIB        = 
QMAKE         = /usr/local/freescale/qt4.8.5/bin
TAR           = tar -cf
COMPRESS      = gzip -9f
COPY          = cp -f
SED           = sed
COPY_FILE     = $(COPY)
COPY_DIR      = $(COPY) -r
STRIP         = strip
INSTALL_FILE  = install -m 644 -p
INSTALL_DIR   = $(COPY_DIR)
INSTALL_PROGRAM = install -m 755 -p
DEL_FILE      = rm -f
SYMLINK       = ln -f -s
DEL_DIR       = rmdir
MOVE          = mv -f
CHK_DIR_EXISTS= test -d
MKDIR         = mkdir -p

####### Output directory

OBJECTS_DIR   = ./

####### Files

SOURCES       = libmplayer/MyProcess.cpp \
		libmplayer/MediaData.cpp \
		libmplayer/MediaSettings.cpp \
		libmplayer/MPlayerVersion.cpp \
		libmplayer/MPlayerProcess.cpp \
		libmplayer/MPlayerLoader.cpp \
		libmplayer/WidgetNoPaintEvent.cpp \
		libmplayer/MPlayerVideoWidget.cpp \
		libmplayer/MPlayerConfig.cpp \
		Backend.cpp \
		MediaObject.cpp \
		MediaController.cpp \
		VideoWidget.cpp \
		AudioOutput.cpp \
		EffectManager.cpp \
		Effect.cpp \
		SinkNode.cpp \
		SeekStack.cpp moc_MyProcess.cpp \
		moc_MPlayerProcess.cpp \
		moc_WidgetNoPaintEvent.cpp \
		moc_MPlayerVideoWidget.cpp \
		moc_Backend.cpp \
		moc_MediaObject.cpp \
		moc_MediaController.cpp \
		moc_VideoWidget.cpp \
		moc_AudioOutput.cpp \
		moc_EffectManager.cpp \
		moc_Effect.cpp \
		moc_SinkNode.cpp \
		moc_SeekStack.cpp
OBJECTS       = MyProcess.o \
		MediaData.o \
		MediaSettings.o \
		MPlayerVersion.o \
		MPlayerProcess.o \
		MPlayerLoader.o \
		WidgetNoPaintEvent.o \
		MPlayerVideoWidget.o \
		MPlayerConfig.o \
		Backend.o \
		MediaObject.o \
		MediaController.o \
		VideoWidget.o \
		AudioOutput.o \
		EffectManager.o \
		Effect
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值