1. Meta
Objetivo: realizar una compilación cruzada de la versión VLC de Windows en Linux y realizar la personalización de las funciones
2. Construye el entorno
2.1 Entorno de compilación
- Versión del sistema: UnionTech OS Desktop 20 Inicio
- Versión del núcleo: 5.10.0-amd64-desktop
- Versión VLC: 3.0.18
- Versión prediseñada: vlc-contrib-x86_64-w64-mingw32-latest
2.2 Instalar herramientas y dependencias
apt-get install gcc-mingw-w64-x86-64 g++-mingw-w64-x86-64 mingw-w64-tools
apt-get install lua5.2 lua5.2:i386 libtool automake autoconf autopoint make gettext pkg-config qt4-dev-tools qt5-default git subversion cmake cvs wine64-development-tools libwine-dev zip p7zip nsis bzip2 yasm ragel ant default-jdk protobuf-compiler dos2unix
/bin/bash: i686-w64-mingw32-gcc:未找到命令
apt-get install gcc-mingw-w64-i686 g++-mingw-w64-i686 mingw-w64-tools
2.3 Obtener el código fuente
Para acelerar la velocidad de descarga, el proyecto de bifurcación de otras personas se descargó a través de gitee, descargue la versión 3.0.18 en la etiqueta del proyecto
2.4 Preparar la biblioteca de terceros
2.4.1 Método 1: prediseño (recomendado)
Nota: el método preconstruido es más rápido y más fácil, pero puede requerir versiones coincidentes
mkdir -p contrib/win32
cd contrib/win32
下载http://download.videolan.org/pub/videolan/contrib/x86_64-w64-mingw32/vlc-contrib-x86_64-w64-mingw32-latest.tar.bz2,并放入contrib/win32目录
../bootstrap --host=x86_64-w64-mingw32
make prebuilt
2.4.2 Método 2: Construcción manual (no recomendado)
Nota: lleva mucho tiempo y esfuerzo, y puede encontrar varios errores
apt-get install subversion yasm cvs cmake ragel autopoint
mkdir -p contrib/win32
cd contrib/win32
../bootstrap --host=x86_64-w64-mingw32
make fetch
make
2.5 Configurar el entorno de compilación
cd /home/name/vlc-3.0.18
./bootstrap
mkdir win32 && cd win32
export PKG_CONFIG_LIBDIR=/home/name/vlc-3.0.18/contrib/x86_64-w64-mingw32/lib/pkgconfig
../extras/package/win32/configure.sh --host=x86_64-w64-mingw32 --build=x86_64-pc-linux-gnu
../configure --host=x86_64-w64-mingw32 --build=x86_64-pc-linux-gnu --disable-chromecast
3. Compilar VLC
make
4. Paquete VLC
make package-win-common
输出创建名为vlc-x.x的子目录,可以直接从这个目录运行VLC
make package-win-strip
与package-win-common基本相同,但将创建“strip”的二进制文件(即最小的大小,无法供调试器使用)
make package-win32-7zip
输出7z的压缩文件包
make package-win32-zip
输出zip的压缩文件包
make package-win32
输出一个自动安装包。必须将NSIS安装在其默认位置才能正常工作
5. Registro de errores
5.1 Error 1: error de configuración
- Mensaje de error: configure: error: necesita luac de 32 bits cuando usa lua de contrib.
- Solución: apt-get install lua5.2:i386
5.2 Error 2: cometer un error de compilación
- 错误信息:stream_out/chromecast/cast_channel.pb.h:12:2: error: #error Este archivo fue generado por una versión más reciente de protoc que es
- Solución: agregue la opción –disable-chromecast cuando configure, ciérrelo primero. Hay un dicho en Internet que es causado por la versión inconsistente de PROTOBUF. Hay evaluaciones de que esta función no está disponible para proyectos generales, así que no gaste energía en investigarla.
5.3 Error 3: error de empaquetado del paquete-win32
- Mensaje de error: make[3]: *** No hay regla para hacer el destino "/usr/include/wine/windows/stdole2.idl", requerido por "stdole2.tlb". detener.
- Solución: instale wine (apt-get install wine), mi entorno tiene /usr/include/wine/wine/windows/stdole2.idl sin /usr/include/wine/windows/stdole2.idl, así que hice un hipervínculo: ln -s /usr/incluir/vino/vino/ventanas /usr/incluir/vino/ventanas
5.4 Error 4: error de empaquetado del paquete-win32
- Mensaje de error: /bin/bash: i686-w64-mingw32-gcc: comando no encontrado
- Solución: apt-get install gcc-mingw-w64-i686 g+±mingw-w64-i686 mingw-w64-tools
6. Documentos de referencia
- https://wiki.videolan.org/Win32Compile/
- https://wiki.videolan.org/Categoría:Edificio/