如何构建Xuggle Xuggler的GPL和LGPL版本?

时间:2014-04-18 21:22:11

标签: c++ gcc cross-compiling xuggler xuggle

我是否可以采取特定步骤从Windows 32位,Windows 64位,Linux 32位和Linux 64位构建Xuggle Xuggler源代码?我已经在多个系统上多次尝试并且不断出现许多不同的错误。

更新

  

我花了几天时间试图让Xuggle Xuggler编译(和   交叉编译)。我成功地解决了原始GPL的编译问题   代码版本和LGPL版本。我以为我会张贴一个   回答我自己关于Stack Overflow的问题,以分享我的知识。

Raspberry Pi上的更新

  

我还可以按照以下相同的基本说明在Raspberry Pi上构建和运行Xuggler。我刚刚用过   我在Github上维护的代码的LGPL版本,并对Pi进行了修改。我也可以在我的Radxa Rock(另一个ARM设备)上使用已编译的JAR文件和二进制文件。如果你有兴趣   在Pi上构建,你可以使用我的pi分支:

     

https://github.com/e-d/xuggle-xuggler

     

如果你很懒,只想要Pi / ARM的预编译.jar文件:

     

GPL Version (supports H.264)

     

LGPL Version (no H.264 support)

1 个答案:

答案 0 :(得分:12)

Here is a formatted version of my answer in a published Google Document

为了完整性(如果链接在某一天死亡),这里的格式不太精确:

构建Xuggle Xuggler(GPL和LGPL许可版本)

[Linux 32位,Linux 64位,Windows 32位,Windows 64位]

要构建Xuggle Xuggler库,您需要两个运行Ubuntu 11.10(32位和64位操作系统)的Linux虚拟机。构建Linux 32位,交叉编译Windows 32位以及交叉编译Windows 64位二进制文​​件需要32位版本的操作系统。构建Linux 64位二进制文​​件需要64位版本的操作系统。

使用VirtualBox,我使用ubuntu-11.10-server-i386.iso和ubuntu-11.10-server-amd64.iso磁盘映像创建了上面讨论的两个虚拟机。这些是Ubuntu的无头服务器版本。安装操作系统后,按照以下步骤构建Xuggler(欢迎您尝试使用不同的依赖版本而不使用root用户,但这是我成功构建的内容):

更改为root用户:

sudo su

只需使用root的主目录:

cd /root

更新apt-get以使用特定存储库:

apt-get install python-software-properties
add-apt-repository ppa:ferramroberto/java
apt-get update

安装Java:

apt-get install sun-java6-jdk sun-java6-plugin

验证HotSpot Java 6 JVM是默认的java:

java -version

如果出现不正确的Java版本,请运行以下命令配置默认值:

update-alternatives --config java

安装gcc,g ++,make和所有其他构建要点:

apt-get install build-essential

安装YASM:

apt-get install yasm

安装Open SSL:

apt-get install openssl

安装包配置:

apt-get install pkg-config

安装Git:

apt-get install git

安装Ant:

apt-get install ant-optional

安装JUnit:

apt-get install junit

安装MingGW以便能够为Windows构建(mingw-w64可以执行32位和64位Windows):

apt-get install mingw-w64

下载LGPL配置的Xuggle源代码(Ed的代码分叉,来自Jeff Wallace的代码,来自最初的GPL xuggle代码)或原始的GPL版本:

LGPL: git clone https://github.com/e-d/xuggle-xuggler.git
GPL: git clone https://github.com/xuggle/xuggle-xuggler.git 

编译并构建JAR文件(内置二进制文件)。确保在64位版本的Ubuntu上运行64位Linux版本。另请注意,在构建之间,您需要运行“ant clobber”以从先前的体系结构中删除所有已编译的文件。要建立运行:

(32/64-bit Linux): ant stage
(64-bit Windows): ant -Dbuild.configure.os=x86_64-w64-mingw32 stage
(32-bit Windows): ant -Dbuild.configure.os=i686-w64-mingw32 stage

JAR文件将位于/ dist / lib目录中。

如果您需要Linux二进制文件另外在CentOS上工作,您现在需要将GCC和G ++的版本更改为使用3.4而不是3.6。

安装GCC 4.4:

apt-get install gcc-4.4

更新符号链接以使用4.4(特定于arch的链接在32位VM上会有所不同):

rm /usr/bin/gcc
ln -s /usr/bin/gcc-4.4 /usr/bin/gcc
rm /usr/bin/x86_64-linux-gnu-gcc
ln -s /usr/bin/x86_64-linux-gnu-gcc-4.4 /usr/bin/x86_64-linux-gnu-gcc

安装C ++(G ++)4.4:

apt-get install c++-4.4

更新符号链接以使用4.4(特定于arch的链接在32位VM上会有所不同):

rm /usr/bin/cpp
ln -s /usr/bin/cpp-4.4 /usr/bin/cpp
rm /usr/bin/x86_64-linux-gnu-cpp
ln -s /usr/bin/x86_64-linux-gnu-cpp-4.4 /usr/bin/x86_64-linux-gnu-cpp
rm /usr/bin/g++
ln -s /usr/bin/g++-4.4 /usr/bin/g++
rm /usr/bin/x86_64-linux-gnu-g++
ln -s /usr/bin/x86_64-linux-gnu-g++-4.4 /usr/bin/x86_64-linux-gnu-g++

验证默认版本:

gcc --version
c++ --version
cpp --version
gcc --version

您现在可以像以前一样运行构建(您只需要重新构建Linux二进制文件)。二进制文件现在将兼容许多Linux发行版的稍微旧版本(包括CentOS兼容性)。这些4.4编译的二进制文件应该仍然可以在4.6编译版本运行的任何地方工作。

特别感谢this blog指出了我正确的方向并给了我上面详述的大部分内容。