linux 中mediainfo源码编译安装及移植
2010-09-10 15:56
543 查看
一.解压
在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链接到新的函数库
在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链接到新的函数库
相关文章推荐
- Linux操作系统下如何编译安装源码包软件
- Linux下从源码编译安装软件中3个命令之间的关系
- linux源码包编译安装软件详解
- Linux编译安装源码包软件
- linux软件包管理——源码包编译安装
- Linux源码编译安装
- Linux上源码编译安装MySQL数据库
- Linux平台编译安装源码包,制作rpm二进制安装包。
- Linux 利用nginx源码编译安装nginx
- linux下从源码开始编译安装google ceres solver
- Linux(CentOS) - 源码编译安装Nginx
- linux编译安装mysql源码
- Linux中GCC源码编译安装
- Linux下SVN源码编译安装配置
- Linux系统 - 源码编译安装Nginx
- Linux系统源码编译安装httpd2.4
- Linux如何编译安装源码包软件
- Linux下源码编译安装MySQL 5.5.8
- linux软件包的安装之----编译源码格式的rpm包(后缀名为.src.rpm的软件包)
- 【Linux探索之旅】第四部分第五课:源码编译,安装便利