1 由于项目需求,这几天在折腾VLC,需要将它裁剪并移植到PowerPC上,由于板子没有到,先在6410上跑。目前从需求看我们只要VLC作为一个server即可,先贴配置,如下:(几乎disable掉所有东东)
#!/bin/sh
# for arm
#CC=/opt/arm-2008q3/bin/arm-none-linux-gnueabi-gcc /
#CXX=/opt/arm-2008q3/bin/arm-none-linux-gnueabi-g++ /
#ARCH=arm /
# --host=arm-none-linux-gnueabi /
build_alias=i486-linux-gnu /
CFLAGS='-g -O2' /
LDFLAGS=-Wl,--as-needed /
CPPFLAGS= /
CXXFLAGS='-g -O2' /
./configure /
--build=i486-linux-gnu /
--enable-run-as-root /
--prefix=/tmp/vlc /
--with-binary-version=2ubuntu1 /
/
--enable-debug /
--disable-hal /
--disable-mtp /
--disable-dbus /
--disable-dbus-control /
--disable-telepathy /
--disable-mmx /
--disable-sse /
--disable-lua /
--disable-notify /
--disable-audioscrobbler /
--disable-taglib /
--disable-live555 /
--disable-dc1394 /
--disable-dv /
--disable-dvdnav /
--disable-smb /
--disable-dvbpsi /
--disable-v4l2 /
--disable-libcdio /
--disable-libvcdinfo /
--disable-libcddb /
--disable-cdda /
--disable-vcd /
--disable-dvb /
--disable-ogg /
--disable-mkv /
--disable-mod /
--disable-mpc /
--disable-gme /
--disable-mad /
--disable-avcodec /
--disable-avformat /
--disable-swscale /
--disable-postproc /
--disable-libsysfs /
--disable-libtar /
--disable-a52 /
--disable-dca /
--disable-zvbi /
--disable-x11 /
--disable-xvideo /
--disable-glx /
--disable-xinerama /
--disable-xcb /
--disable-opengl /
--disable-sdl /
--disable-sdl-image /
--disable-freetype /
--disable-fribidi /
--disable-fontconfig /
--disable-libxml2 /
--disable-hd1000v /
--disable-skins2 /
--disable-qt4 /
--disable-atmo /
/
--disable-vlm /
--disable-screen /
--disable-wma-fixed /
--disable-id3tag /
--disable-fb /
--disable-oss /
--disable-pulse /
--disable-alsa /
--disable-upnp /
--disable-ncurses /
--disable-visual /
--disable-libgcrypt /
--disable-vlc /
/
--disable-gnutls /
--disable-remoteosd /
--disable-libmpeg2 /
--disable-vorbis /
--disable-speex /
--disable-schroedinger /
--disable-png /
--disable-x264 /
--disable-fluidsynth /
--disable-cmml /
--disable-kate /
--disable-tiger /
--disable-bonjour /
/
# --disable-httpd /
# --enable-static /
2 上面的配置中,将arm部分替换则可以在我们的S3C6410开发板上作为server运行。
3 --enable-static不能加:目前不知道为什么,反正加上后会报告 assert (p_module_bank);通不过,具体原因未跟踪。
4 在开发板上运行:
从板子上挂载编译机器:mount -o nolock 192.168.2.240:/tmp /mnt
在板子上运行:LD_LIBRARY_PATH=$PWD/lib ./bin/vlc --plugin-path=$PWD ../1.mp4 --sout '# std{access=mmsh,mux=ts,dst=192.168.2.225:1234}'
这里注意2点:1) LD_LIBRARY_PATH:可以看ld.so的manuel。2)VLC的参数,--plugin-path=$PWD。
5 到目前为止,在几乎没有动过VLC的具体实现代码的情况下,便移植到S3C6410上成功运行,说明VLC代码质量还是不错的。
6 裁剪移植思路:
1 通过configure尽量去掉无用模块:需要在PC段不断试验,这正是我上一篇blog记录使用distcc的原因。
2 利用新的PC环境模拟开发板来进行调试:这里我使用一台装在笔记本上的vmware来实现。vmware干净安装ubuntu9.04,将编译好的VLC安装到vmware上,通过比较找到那些必须的模块,同时,在PC上模拟可以很方便的使用GDB(CGDB)等工具辅助。提高效率。
3 PC段ok了就可以上板子了,尽量找功能完善的板子来用(我遇到过开发板自己有问题导致走了很多弯路的情况)。
4 多google(为什么不是100du?),学习前辈们的经验:有时候直接将错误信息放到搜
索框中就能找到答案。
7 移植虽然耗时间,但是还是比较顺利的。后继工作需要静下心来搞清楚VLC的各个细节了。VLC对我们后继产品还是有不少帮助的,just like mplayer。
8 多总结,共享自己的成果和过程。只有整个团队得到提高,我们项目组、甚至公司的研发实力才能真正提高。在我们这样的技术性公司,技术不是万能,但是没有技术则万万不能。