Mediainfo 依赖libz和libzen以及libmediainfo,编译顺序为: libz, libzen, libmediainfo (1)编译libz(suse 11已经有了这个库,跳过此步) ./config; make; make install; 执行完上面的命令,会在/usr/local/lib/目录 下生成 libz.a 在/usr/local/include目录 下生成zlib.h(这个文件移植没用到) (2)编译libzen 1.下载zenlib http://sourceforge.net/projects/zenlib/files/ 2.根据ZenLib/Project/GNU/libzen_contrib.spec文件中的描述进行编译,不是所有的命令都要执行,我主要执行了以下命令 (需要安装doxygen ,在ubuntu上 sudo apt-get install doxygen) (autogen这个命令需要安装automake libtool ,在ubuntu上 sudo apt-get install automake;sudo apt-get install libtool) cd ./Source/Doc; doxygen Doxyfile; cd -; cd ./Project/GNU/Library chmod +x autogen; ./autogen; ./configure --enable-shared; make clean; make; make install; ls -lrt /usr/local/lib/libzen*; 3.如果上面的步骤执行成功,应该看到以下5个函数库:libzen.a libzen.la libzen.so libzen.so.0 libzen.so.0.0 5个函数库 (3)编译libmediainfo 1.下载 http://sourceforge.net/projects/mediainfo/files/source/libmediainfo/ 2.根据MediaInfoLib/Project/GNU/libmediainfo.spec文件中的描述进行编译,不是所有的命令都要执行,我主要执行了以下命令 cd ./Source/Doc/; doxygen Doxyfile; cd -; cd ./Project/GNU/Library; chmod +x autogen; ./autogen; ./configure --enable-shared; make clean; make; make install; ls -lrt /usr/local/lib/libmediainfo* 3.如果上面的步骤执行成功,应该看到以下2个函数库:libmediainfo.a libmediainfo.la (4)编译mediainfo 1.下载 http://sourceforge.net/projects/mediainfo/files/source/mediainfo/ Mediainfo有两个版本:CLI命令行版本和GUI图形界面版本 2. MediaInfo/Project/GNU/mediainfo.spec文档中描述的有关CLI的部分进行编译 cd ./Project/GNU/CLI; chmod +x autogen; ./autogen; ./configure; make; make install; ls -lrt /usr/local/bin/mediainfo* 3.如果上面的步骤执行成功,应该看到mediainfo程序 可能遇到的问题: 1. 系统自带zlib,于是开始时没有重新安装zlib;安装zenlib没有问题,到libmediainfo时死活过不去,遂查看configure.ac发现其中用了相对路径定位zlib和zenlib,于是重来一遍,OK 2. 可能需要 export LD_LIBRARY_PATH=/usr/local/lib (因为linux默认的函数库目录为/lib 和 /usr/lib) export PATH=$PATH:/usr/local/bin 3. libzen.so.0依赖/usr/lib/libstdc++.so.6 要求版本GLIBCXX-3.4.9或以上,如果你的系统上这个函数库的版本低了,就将libstdc++.so.6.0.13拷到/usr/lib下,并执行命令 ln –fs libstdc++.so.6.0.13 libstdc++.so.6 将libstdc++.so.6链接到新的函数库 本文参考了http://blog.csdn.net/yugong2009/article/details/5875998