[問題]無法編譯支援 DirectFB 的 MPlayer

我們生活周遭存在太多太多的 embedded system ,過去 embedded system 有專屬的 OS,現在 linux 也可以應用在嵌入式環境,不過本版將廣泛討論所有嵌入式系統不只 linux 喔,歡迎有這方面經驗或有興趣的朋友一同進來討論。

版主: chester

[問題]無法編譯支援 DirectFB 的 MPlayer

文章lkmalone » 週四 4月 30, 2009 1:55 pm

我在交叉編譯MPlayer時有加上 --enable-directfb,但是在make時發生can't find -ldirectfb,但是我的相關路徑確實有該函式庫,後來網路搜尋有人說要安裝 "Install directfb and driverfb-dev package",我卻找不到driverfb-dev package這個東東。

有人曾經順利交叉編譯支援DirectFB video output的 MPlayer,請給個指導。
Linux的世界既廣又深,有興趣的朋友們可以一起交流
lkmalone
可愛的小學生
可愛的小學生
 
文章: 8
註冊時間: 週五 6月 20, 2008 2:26 pm

文章阿信 » 週四 4月 30, 2009 1:58 pm

先確定有/usr/lib/libdirectfb.so 或是在 /etc/ld.so.conf中指定的目錄下。

mplayer可以支援directfb輸出的。
頭像
阿信
版面大總管
版面大總管
 
文章: 4756
註冊時間: 週二 9月 03, 2002 11:58 pm
來自: 台灣 - 嘉義

文章lkmalone » 週四 4月 30, 2009 6:12 pm

我在編譯MPlayer時有指定DirectFB得標頭檔跟函式庫的路徑給它,例如
--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
Linux的世界既廣又深,有興趣的朋友們可以一起交流
lkmalone
可愛的小學生
可愛的小學生
 
文章: 8
註冊時間: 週五 6月 20, 2008 2:26 pm

文章wiz » 週四 4月 30, 2009 8:13 pm

先確認有沒有安裝 "libdirectfb-dev"
wiz
可愛的小學生
可愛的小學生
 
文章: 62
註冊時間: 週日 11月 24, 2002 7:57 pm

文章阿信 » 週五 5月 01, 2009 8:18 am

lkmalone 寫:我在編譯MPlayer時有指定DirectFB得標頭檔跟函式庫的路徑給它,例如
--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 檔,也是無法編譯。
頭像
阿信
版面大總管
版面大總管
 
文章: 4756
註冊時間: 週二 9月 03, 2002 11:58 pm
來自: 台灣 - 嘉義

文章lkmalone » 週一 5月 04, 2009 3:07 pm

這是我的錯誤:
/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要從哪裡下載勒,網路搜尋都找不到??
Linux的世界既廣又深,有興趣的朋友們可以一起交流
lkmalone
可愛的小學生
可愛的小學生
 
文章: 8
註冊時間: 週五 6月 20, 2008 2:26 pm

文章阿信 » 週二 5月 05, 2009 9:15 pm

lkmalone 寫:這是我的錯誤:
/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 (*)

試試看吧
頭像
阿信
版面大總管
版面大總管
 
文章: 4756
註冊時間: 週二 9月 03, 2002 11:58 pm
來自: 台灣 - 嘉義

文章lkmalone » 週三 5月 13, 2009 9:55 am

我找到解決的方法,就是在交叉編譯時編譯選項不要加上--enable-static,就可以順利編譯完成。而且我想要加入支援alsa audio output時,如果編譯選項有--enable-static的話,./configure 會偵測不到alsa的相關 lib。有人知道為什麼編譯MPlayer時加入--enable-static會有以上類似的怪問題勒??

再來我使用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的面板時都很順暢沒問題。

在此感謝所有回答我問題的朋友們,謝謝你們的熱情幫助,如果我以上所說有錯誤的話,麻煩各位留言指導。
Linux的世界既廣又深,有興趣的朋友們可以一起交流
lkmalone
可愛的小學生
可愛的小學生
 
文章: 8
註冊時間: 週五 6月 20, 2008 2:26 pm

Re: [問題]無法編譯支援 DirectFB 的 MPlayer

文章老人 » 週一 6月 14, 2010 4:18 pm

發生這個問題的原因是因為cross-compiler找不到directfb
而這要從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的製作方式
老人
 


回到 embedded system

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客