我正在嘗試爲VLC構建一個'out of tree'插件。VLC插件出樹造成分段錯誤
電腦規格:英特爾64位的Ubuntu 12.04
VLC規格: VLC媒體播放器2.0.8
爲了解決這個問題我
- 克隆的VLC git倉庫
- 添加我的模塊(只是一些名稱變化的vmem)
- 添加模塊信息到自動工具
它的工作!當我轉到工具 - >首選項 - >視頻 - >輸出時,我可以在VLC中看到我的模塊。
我想做'Out of Tree',在那裏我建立獨立於VLC樹的模塊,並將生成的共享對象庫複製到VLC可以讀取它並且VLC檢測到它的位置。
我也跟着在這裏說明: VLC Out of tree compile
- 我複製我的「樹」模塊到一個新的目錄
- 寫了
SConstruct
文件時,它基於關閉的從上面的說明,以及建立作爲http://wiki.videolan.org/Documentation:VLC_Modules_Loading/
這裏的說明是模塊的縮短版本:
#define DOMAIN "vlc-nysa"
#define _(str) dgettext(DOMAIN, str)
#define N_(str) (str)
#define MODULE_STRING "nysa-video"
vlc_module_begin()
/* VLC Uses these to identify the module */
set_text_domain (DOMAIN)
set_description (N_("Nysa Video Output" ))
set_shortname (N_("Nysa Video" ))
set_category (CAT_VIDEO )
set_subcategory (SUBCAT_VIDEO_VOUT )
set_capability ("vout display", 1 )
/* Options left out for brevity */
/* Add Callbacks */
set_callbacks (Open, Close )
vlc_module_end()
/* implementation here */
輸出
所以人們沒有弄清楚這裏的scons的語法是構建輸出:
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
gcc -o src/nysa_video.os -c -std=gnu99 -Wall -Wextra -O2 -fPIC -fPIC -D__PLUGIN__ -D_FILE_OFFSET_BITS=64 -D_REENTRANT -D_THREAD_SAFE -DPIC -I/usr/include/vlc -I/usr/include/vlc/plugins -Iinclude src/nysa_video.c
gcc -o build/libnysa_video_plugin.so -Wl,-no-undefined,-z,defs -shared src/nysa_video.os -L/usr/lib -L/usr/local/lib -lvlc -lvlccore
scons: `install' is up to date.
scons: done building targets.
結果
我得到一個文件名爲libnysa_video_plugin.so
,我將其複製到/usr/lib/vlc/plugins/video_output
目錄中
當我運行VLC,我收到了賽格故障:
VLC媒體播放器2.0.8 Twoflower(修訂2.0.8a-0-g68cf50b) 分割故障(核心轉儲)
dmesg | tail
打印出:
[141376.468964] VLC [27609]:段錯誤在88 IP 00007f06ccd6a4db SP在libvlccore.so.5.1 00007fff029a6310錯誤6。1 7f06ccce4000 + db000]
這裏是我的git回購的鏈接項目: Nysa Video Git Repo
要建立你需要scons的,並在基本目錄:
- 建設:
scons
- 安裝(安裝到
/usr/lib/vlc/plugins/video_output
):sudo scons install