linux 中mediainfo源码编译安装及移植 .

转自http://blog.csdn.net/yugong2009/article/details/5875998  有点变化:注意文中加 粗标红者

 

这个编译mediainfo的过程只适用于32位系统

一. 解压

linux 下用 7za –x *****.7z 解压缩 mediainfo 源码 (mediainfo_0.7.35_AllInclusive.7z)

 

二.编译

Mediainfo 依赖 libz libzen 以及 libmediainfo

编译顺序为: libz, libzen, libmediainfo

(1) 编译 libz

  zlib/config

  zlib/make

  zlib/make install

 

执行完上面的命令,会在 /usr/local/lib/ 目录 下生成 libz.a

                     /usr/local/include 目录 下生成 zlib.h( 这个文件移植没用到 )

(2) 编译 libzen

根据 ZenLib/Project/GNU/libzen_contrib.spec 文件中的描述进行编译 , 不是所有的命令都要执行,我主要执行了以下命令

ZenLib/Source/Doc 下执行

  doxygen Doxyfile

(这个命令需要先安装 doxygen , ubuntu sudo apt-get install doxygen

ZenLib/Project/GNU/Library 目录下执行:

chmod +x autogen

./autogen

     ( 这个命令需要安装 automake libtool ,在 ubuntu sudo apt-get install automake

sudo apt-get install libtool)

./ configure   --enable-shared

 

make clean

make

makeinstall

 

执行完上面的命令,会在 /usr/local/lib/ 目录 下生成 libzen.a   libzen.la     libzen.so   libzen.so.0   libzen.so.0.0  5 个函数库

 

(3) 编译 libmediainfo

根据 MediaInfoLib/Project/GNU/libmediainfo.spec 文件中的描述进行编译 , 不是所有的命令都要执行,我主要执行了以下命令

MediaInfoLib/Source/Doc/ 下执行

doxygen Doxyfile

MediaInfoLib/Project/GNU/Library 下执行

chmod +x autogen

./autogen

./ configure --enable-shared

make clean

make

makeinstall

执行完上面的命令,会在 /usr/local/lib/ 目录 下生成 libmediainfo.a libmediainfo.la 两个函数库

 

(4) 编译 mediainfo

Mediainfo 有两个版本: CLI 命令行版本   GUI 图形界面版本 , 项目中只需要命令行版本的,所以这里只选择 CLI 目录下的进行编译

MediaInfo/Project/GNU/mediainfo.spec 文档中描述的有关 CLI 的部分 进行编译

MediaInfo/Project/GNU/CLI 下执行

    chmod +x autogen

./autogen

Configure

make

makeinstall

执行完上面的命令,会在 /usr/local/bin 目录 下生成 mediainfo 可执行文件

 

(5) 到此为此,所有的编译和安装都做完了,但还需要如下配置

   export  LD_LIBRARY_PATH=/usr/local/lib ( 因为 linux 默认的函数库目录为 /lib /usr/lib)

   export  PATH=$PATH:/usr/local/bin

6 )运行 mediainfo 命令的格式问题:

       mediainfo “—Inform=Video;%Duration%” a.flv 

要在命令的格式部分加入 ”” 号,才能正确输出 (window 中可加可以不加 )

mediainfo  不能用大写 “MediaInfo” ,应该用小写。但在 window 中则可以。

 

在java运行Runtime.exec()方法的格式为  mediainfo —Inform=Video;%Duration% a.flv  不要加引号

 

三. 移植

因为编译需要一些工具如 Doxygen, automake , libtool ,在 ubuntu apt-get 安装很方便,所以选择在 ubuntu 中编译源码后,再种植到别的系统( suse )中运行。

 

(1)        将函数库放到 /usr/lib /lib ( 不需要配置 )

或者放到 /usr/local/lib 中,这就需要到上面( 5 )的配置

  (2 )  检查下函数库的权限,修改为 777(注意,这里必须是777,否则Runtime.exec()时没有权限)

(3)   将可执行文件 mediainfo 放到 /usr/local/bin 中,并做上面 (5) 中的配置

(4)  还有一个可能出现的问题

     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 链接到新的函数库

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值