[问题]无法编译支援 DirectFB 的 MPlayer
时间:2009-04-30
来源:互联网
有人曾经顺利交叉编译支援DirectFB video output的 MPlayer,请给个指导。
作者: lkmalone 发布时间: 2009-04-30
mplayer可以支援directfb输出的。
作者: 阿信 发布时间: 2009-04-30
--with-extraincdir=/home/will/directfb/include
--with-extralibdir=/home/will/directfb/lib
当然DirectFB的函式库是经过我交叉编译过后的,但还是会发生can't find -ldirectfb,我猜我交叉编译的函式库或许不是MPlayer要的,想请问您是编译哪一个DirectFB的套件。
然后我是在做交叉编译不懂为何要确定有/usr/lib/libdirectfb.so,那边放的档案应该是一般GCC编译的吧。不过我确定/usr/lib/libdirectfb.so是有的,但还是一样can't find -ldirectfb
作者: lkmalone 发布时间: 2009-04-30
作者: wiz 发布时间: 2009-04-30
--with-extraincdir=/home/will/directfb/include
--with-extralibdir=/home/will/directfb/lib
当然DirectFB的函式库是经过我交叉编译过后的,但还是会发生can't find -ldirectfb,我猜我交叉编译的函式库或许不是MPlayer要的,想请问您是编译哪一个DirectFB的套件。
然后我是在做交叉编译不懂为何要确定有/usr/lib/libdirectfb.so,那边放的档案应该是一般GCC编译的吧。不过我确定/usr/lib/libdirectfb.so是有的,但还是一样can't find -ldirectfb
Hi, 小弟是好玩,想把mplayer + directfb po到板子上去,当时用的是directfb-1.0.1的版本。
整段过程是一个一个cross-compile,lkmalone兄似乎没提到directfb是不是自已cross-compile,所以弟认为是你的directfb是未经过cross-compile而直接安装某个平台的package.
这样会造成即使有so档和 header 档,也是无法编译。
作者: 阿信 发布时间: 2009-05-01
/arm-linux-gnueabi/bin/ld: cannot find -ldirectfb
collect2: ld returned 1 exit status
make: *** [mplayer] Error 1
我的directfb有经过cross-compile,但还是显示cannot find -ldirectfb,这让我感到困惑。
我的编译过程是先cross-compile directfb,再利用编译过的 lib 跟 .h 档cross-compile mplayer ,请问这样的作法有少步骤吗??
然后 wiz兄 所说的确认有没有安装 "libdirectfb-dev",libdirectfb-dev要从哪里下载勒,网路搜寻都找不到??
作者: lkmalone 发布时间: 2009-05-04
/arm-linux-gnueabi/bin/ld: cannot find -ldirectfb
collect2: ld returned 1 exit status
make: *** [mplayer] Error 1
我的directfb有经过cross-compile,但还是显示cannot find -ldirectfb,这让我感到困惑。
我的编译过程是先cross-compile directfb,再利用编译过的 lib 跟 .h 档cross-compile mplayer ,请问这样的作法有少步骤吗??
然后 wiz兄 所说的确认有没有安装 "libdirectfb-dev",libdirectfb-dev要从哪里下载勒,网路搜寻都找不到??
Hi,
不晓得您是将directfb cross compile装在那个路径,如果是/usr/local的话,可以利用
pkg-config --libs --cflags directfb
小弟的机器上会显示:
-D_REENTRANT -I/usr/local/include/directfb -L/usr/local/lib -ldirectfb -lz -lfusion -ldirect -lpthread -ldl
再利用这一串来设定
--extra-libs=FLAGS extra linker flags
--extra-libs-mplayer=FLAGS extra linker flags for MPlayer
--extra-libs-mencoder=FLAGS extra linker flags for MEncoder
--with-extraincdir=DIR extra header search paths in DIR (*)
--with-extralibdir=DIR extra linker search paths in DIR (*)
试试看吧
作者: 阿信 发布时间: 2009-05-05
再来我使用MPlayer时发现个小问题分享给大家,在一般安装下MPlayer的video output会使用fbdev,建议手动改为使用fbdev2,方法如下:
./mplayer -vo help --->列出所有MPlayer支援的video output
./mplayer -vo fbdev2 影片档名--->使用fbdev2播放影片
为何要使用fbdev2 呢?原因如下:
面板的资料传输有分为16 bpp跟32 bpp(目前使用的大都这两种格式ㄅ),32 bpp的面板使用fbdev播放时会有问题,而fbdev2 在播放16 bpp跟32 bpp的面板时都很顺畅没问题。
在此感谢所有回答我问题的朋友们,谢谢你们的热情帮助,如果我以上所说有错误的话,麻烦各位留言指导。
作者: lkmalone 发布时间: 2009-05-13
而这要从cross-compiler的内定的联结程式库的路径上去找
不是放在/usr/lib里
也不是放在/usr/local/lib里
一般来说我们都会先建一个arm的环境的root file system
比如说 /usr/local/armenv/
然后先在/usr/local/armenv下 建立出bin etc dev lib home root sbin usr var tmp 等路径
这时候建议的做法是
将基本标准的函式库 例如 uclibc 的libc与libm以及libpthread 的程式库放在armenv的lib底下
将基本标准的include 档 放在 armenv/usr/include底下
至於放的方式最好是先放linux-kernel header 使用 kernel source 的make header-install 指令安装进去
然后再把uclibc的标头档也放在 armenv/usr/include底下
接下来到directfb官网下载directfb的原始包
这时候在cross-compiler的编译过程当中要先指定好-with-sysroot的方式把系统路径指定到/usr/local/armenv里
directfb编好之后就把include档放到armenv/usr/include 而so档就放到armenv/usr/lib里
最后再编译mplayer
不过这个时候切记一点
因为mplayer的configure 是无法直接指定到arm环境里的程式库的
主要的原因出在於libtool这只程式上
所以在mplayer里的libtool需要手动改支援到arm 的程式库的路径
才有办法正常编译
一般来说我们都是手动改它
有时候是先用configure先做出Makefile
然后再去修改Makefile的内容
或者你也可以试著自己去制作一个专属於自己arm开发环境下的mplayer 的Makefile
不过都会很覆杂就是了
建议你可以从Android的source当中 有个build的路径下
去参考人家android 的makefile的制作方式
作者: 发布时间: 2010-06-14
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28