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

111*_*01b 7 c++ gcc cross-compiling xuggle xuggler

我是否可以采取具体步骤从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/ed/xuggle-xuggler

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

GPL版本(支持H.264)

LGPL版本(无H.264支持)

111*_*01b 12

以下是我在已发布的Google文档中的答案的格式化版本.

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

构建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
Run Code Online (Sandbox Code Playgroud)

只需使用root的主目录:

cd /root
Run Code Online (Sandbox Code Playgroud)

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

apt-get install python-software-properties
add-apt-repository ppa:ferramroberto/java
apt-get update
Run Code Online (Sandbox Code Playgroud)

安装Java:

apt-get install sun-java6-jdk sun-java6-plugin
Run Code Online (Sandbox Code Playgroud)

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

java -version
Run Code Online (Sandbox Code Playgroud)

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

update-alternatives --config java
Run Code Online (Sandbox Code Playgroud)

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

apt-get install build-essential
Run Code Online (Sandbox Code Playgroud)

安装YASM:

apt-get install yasm
Run Code Online (Sandbox Code Playgroud)

安装Open SSL:

apt-get install openssl
Run Code Online (Sandbox Code Playgroud)

安装包配置:

apt-get install pkg-config
Run Code Online (Sandbox Code Playgroud)

安装Git:

apt-get install git
Run Code Online (Sandbox Code Playgroud)

安装Ant:

apt-get install ant-optional
Run Code Online (Sandbox Code Playgroud)

安装JUnit:

apt-get install junit
Run Code Online (Sandbox Code Playgroud)

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

apt-get install mingw-w64
Run Code Online (Sandbox Code Playgroud)

下载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 
Run Code Online (Sandbox Code Playgroud)

编译并构建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
Run Code Online (Sandbox Code Playgroud)

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

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

安装GCC 4.4:

apt-get install gcc-4.4
Run Code Online (Sandbox Code Playgroud)

更新使用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
Run Code Online (Sandbox Code Playgroud)

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

apt-get install c++-4.4
Run Code Online (Sandbox Code Playgroud)

更新使用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++
Run Code Online (Sandbox Code Playgroud)

验证默认版本:

gcc --version
c++ --version
cpp --version
gcc --version
Run Code Online (Sandbox Code Playgroud)

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

特别感谢这个博客指出了我正确的方向,并给了我上面详述的大部分内容.