Linux Installation Guide¶
This guide covers building and installing Movian on various Linux distributions from source code.
Quick Installation (Ubuntu/Debian)¶
For Ubuntu 16.04+ and Debian 9+:
# 1. Install dependencies
sudo apt-get update
sudo apt-get install -y \
git build-essential \
libfreetype6-dev libfontconfig1-dev libxext-dev \
libgl1-mesa-dev libasound2-dev libgtk2.0-dev \
libxss-dev libxxf86vm-dev libxv-dev libvdpau-dev \
yasm libpulse-dev libssl-dev curl \
libwebkitgtk-dev libsqlite3-dev libavahi-client-dev
# 2. Clone and build
git clone https://github.com/andoma/movian.git
cd movian
./configure
make -j$(nproc)
# 3. Install (optional)
sudo make install
# 4. Run
./build.linux/movian
Distribution-Specific Instructions¶
Ubuntu/Debian¶
Ubuntu 20.04 LTS (Focal Fossa)¶
sudo apt-get update
sudo apt-get install -y \
git build-essential pkg-config \
libfreetype6-dev libfontconfig1-dev \
libxext-dev libgl1-mesa-dev \
libasound2-dev libpulse-dev \
libgtk2.0-dev libxss-dev \
libxxf86vm-dev libxv-dev libvdpau-dev \
yasm libssl-dev curl \
libwebkitgtk-3.0-dev libsqlite3-dev \
libavahi-client-dev
Ubuntu 18.04 LTS (Bionic Beaver)¶
sudo apt-get update
sudo apt-get install -y \
git build-essential pkg-config \
libfreetype6-dev libfontconfig1-dev \
libxext-dev libgl1-mesa-dev \
libasound2-dev libpulse-dev \
libgtk2.0-dev libxss-dev \
libxxf86vm-dev libxv-dev libvdpau-dev \
yasm libssl-dev curl \
libwebkitgtk-dev libsqlite3-dev \
libavahi-client-dev
Debian 11 (Bullseye)¶
sudo apt-get update
sudo apt-get install -y \
git build-essential pkg-config \
libfreetype6-dev libfontconfig1-dev \
libxext-dev libgl1-mesa-dev \
libasound2-dev libpulse-dev \
libgtk2.0-dev libxss-dev \
libxxf86vm-dev libxv-dev libvdpau-dev \
yasm libssl-dev curl \
libwebkit2gtk-4.0-dev libsqlite3-dev \
libavahi-client-dev
Fedora/CentOS/RHEL¶
Fedora 34+¶
sudo dnf update
sudo dnf install -y \
git gcc gcc-c++ make pkg-config \
freetype-devel fontconfig-devel \
libXext-devel mesa-libGL-devel \
alsa-lib-devel pulseaudio-libs-devel \
gtk2-devel libXScrnSaver-devel \
libXxf86vm-devel libXv-devel \
libvdpau-devel yasm openssl-devel \
curl-devel webkitgtk3-devel \
sqlite-devel avahi-devel
CentOS 8/RHEL 8¶
# Enable EPEL repository
sudo dnf install -y epel-release
sudo dnf config-manager --set-enabled powertools
sudo dnf install -y \
git gcc gcc-c++ make pkg-config \
freetype-devel fontconfig-devel \
libXext-devel mesa-libGL-devel \
alsa-lib-devel pulseaudio-libs-devel \
gtk2-devel libXScrnSaver-devel \
libXxf86vm-devel libXv-devel \
libvdpau-devel yasm openssl-devel \
curl-devel sqlite-devel avahi-devel
CentOS 7/RHEL 7¶
# Enable EPEL repository
sudo yum install -y epel-release
sudo yum install -y \
git gcc gcc-c++ make pkg-config \
freetype-devel fontconfig-devel \
libXext-devel mesa-libGL-devel \
alsa-lib-devel pulseaudio-libs-devel \
gtk2-devel libXScrnSaver-devel \
libXxf86vm-devel libXv-devel \
libvdpau-devel yasm openssl-devel \
curl-devel sqlite-devel avahi-devel
# Note: May need newer GCC for C99 support
sudo yum install -y centos-release-scl
sudo yum install -y devtoolset-8-gcc devtoolset-8-gcc-c++
scl enable devtoolset-8 bash
Arch Linux¶
# Install dependencies
sudo pacman -S --needed \
git base-devel pkg-config \
freetype2 fontconfig libxext \
mesa alsa-lib pulseaudio gtk2 \
libxss libxxf86vm libxv libvdpau \
yasm openssl curl webkit2gtk \
sqlite avahi
# Build and install
git clone https://github.com/andoma/movian.git
cd movian
./configure
make -j$(nproc)
sudo make install
openSUSE¶
openSUSE Leap 15.x¶
sudo zypper refresh
sudo zypper install -y \
git gcc gcc-c++ make pkg-config \
freetype2-devel fontconfig-devel \
libXext-devel Mesa-libGL-devel \
alsa-devel libpulse-devel \
gtk2-devel libXss-devel \
libXxf86vm-devel libXv-devel \
libvdpau-devel yasm libopenssl-devel \
libcurl-devel webkit2gtk3-devel \
sqlite3-devel libavahi-devel
openSUSE Tumbleweed¶
sudo zypper refresh
sudo zypper install -y \
git gcc gcc-c++ make pkg-config \
freetype2-devel fontconfig-devel \
libXext-devel Mesa-libGL-devel \
alsa-devel libpulse-devel \
gtk2-devel libXss-devel \
libXxf86vm-devel libXv-devel \
libvdpau-devel yasm libopenssl-3-devel \
libcurl-devel webkit2gtk3-devel \
sqlite3-devel libavahi-devel
Build Process¶
1. Clone Repository¶
2. Configure Build¶
Basic Configuration¶
Configuration Options¶
# Release build (optimized)
./configure --release
# Debug build with symbols
./configure --optlevel=g --enable-bughunt
# Disable optional features
./configure --disable-webkit --disable-vdpau
# Custom installation prefix
./configure --prefix=/opt/movian
# Specify compiler
./configure --cc=gcc-9 --cxx=g++-9
3. Compile¶
# Use all CPU cores
make -j$(nproc)
# Or specify number of jobs
make -j4
# Verbose output for debugging
make V=1
4. Install (Optional)¶
# System-wide installation (requires root)
sudo make install
# Or run from build directory
./build.linux/movian
Configuration Options¶
Common Configure Flags¶
| Flag | Description | Default |
|---|---|---|
--release |
Optimized release build | Debug build |
--prefix=PATH |
Installation prefix | /usr/local |
--disable-webkit |
Disable WebKit HTML rendering | Enabled |
--disable-vdpau |
Disable VDPAU video acceleration | Enabled |
--disable-pulse |
Disable PulseAudio support | Enabled |
--glw-frontend=none |
Disable GLW UI (headless) | X11 frontend |
--enable-bughunt |
Enable debugging features | Disabled |
Advanced Options¶
# Cross-compilation
./configure --arch=arm --cpu=cortex-a7
# Static linking
./configure --enable-static --disable-shared
# Custom library paths
./configure --extra-cflags="-I/opt/include" --extra-ldflags="-L/opt/lib"
# Sanitizers for debugging
./configure --extra-cflags="-fsanitize=address" --extra-ldflags="-fsanitize=address"
Troubleshooting¶
Common Build Issues¶
Missing Dependencies¶
# Error: Package 'freetype2' not found
sudo apt-get install libfreetype6-dev
# Error: Package 'fontconfig' not found
sudo apt-get install libfontconfig1-dev
# Error: GL/gl.h: No such file or directory
sudo apt-get install libgl1-mesa-dev
# Error: X11/Xlib.h: No such file or directory
sudo apt-get install libx11-dev libxext-dev
Compiler Issues¶
# Error: C99 support required
# Use newer GCC version
sudo apt-get install gcc-8 g++-8
./configure --cc=gcc-8 --cxx=g++-8
# Error: undefined reference to symbol 'pthread_create'
# Add pthread linking
./configure --extra-ldflags="-lpthread"
Library Version Issues¶
# Error: WebKit version too old
# Disable WebKit if not needed
./configure --disable-webkit
# Error: OpenSSL version incompatible
# Use system OpenSSL or disable
./configure --disable-openssl
Runtime Issues¶
Missing Libraries¶
# Check library dependencies
ldd build.linux/movian
# Error: libssl.so.1.1: cannot open shared object file
sudo apt-get install libssl1.1
# Error: libpulse.so.0: cannot open shared object file
sudo apt-get install libpulse0
Permission Issues¶
# Error: Permission denied accessing audio device
sudo usermod -a -G audio $USER
# Log out and back in
# Error: Permission denied accessing video device
sudo usermod -a -G video $USER
Display Issues¶
# Error: Cannot connect to X server
export DISPLAY=:0
# Error: GLX extension not available
# Install proper graphics drivers
sudo apt-get install mesa-utils
glxinfo | grep "direct rendering"
Development Environment Setup¶
IDE Configuration¶
Visual Studio Code¶
# Install C/C++ extension
code --install-extension ms-vscode.cpptools
# Create .vscode/c_cpp_properties.json
mkdir -p .vscode
cat > .vscode/c_cpp_properties.json << 'EOF'
{
"configurations": [
{
"name": "Linux",
"includePath": [
"${workspaceFolder}/**",
"/usr/include/**"
],
"defines": [],
"compilerPath": "/usr/bin/gcc",
"cStandard": "c99",
"cppStandard": "c++11",
"intelliSenseMode": "linux-gcc-x64"
}
],
"version": 4
}
EOF
CLion¶
- Open project as "Makefile Application"
- Set build directory to
build.linux - Configure toolchain in File → Settings → Build → Toolchains
Debugging Setup¶
GDB Configuration¶
# Build with debug symbols
./configure --optlevel=g --enable-bughunt
make -j$(nproc)
# Run with GDB
gdb ./build.linux/movian
(gdb) run
(gdb) bt # backtrace on crash
Valgrind Memory Debugging¶
# Install Valgrind
sudo apt-get install valgrind
# Run with memory checking
valgrind --leak-check=full --show-leak-kinds=all ./build.linux/movian
AddressSanitizer¶
# Build with AddressSanitizer
./configure --extra-cflags="-fsanitize=address -fno-omit-frame-pointer" \
--extra-ldflags="-fsanitize=address"
make -j$(nproc)
# Run normally - crashes will show detailed info
./build.linux/movian
Performance Optimization¶
Build Optimizations¶
# Maximum optimization
./configure --optlevel=3 --release
# Link-time optimization (GCC 4.9+)
./configure --extra-cflags="-flto" --extra-ldflags="-flto"
# Native CPU optimization
./configure --extra-cflags="-march=native -mtune=native"
Runtime Optimizations¶
# Set CPU governor to performance
echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
# Increase process priority
nice -n -10 ./build.linux/movian
# Use dedicated GPU (NVIDIA Optimus)
__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia ./build.linux/movian
System Integration¶
Desktop Integration¶
Create Desktop Entry¶
# Create desktop file
mkdir -p ~/.local/share/applications
cat > ~/.local/share/applications/movian.desktop << 'EOF'
[Desktop Entry]
Name=Movian
Comment=Media Player
Exec=/usr/local/bin/movian
Icon=movian
Terminal=false
Type=Application
Categories=AudioVideo;Player;
MimeType=video/x-msvideo;video/mp4;video/x-matroska;
EOF
# Update desktop database
update-desktop-database ~/.local/share/applications
File Associations¶
# Associate vi[glw](../reference/glossary.md#glw-opengl-widget) files with Movian
xdg-mime default movian.desktop video/mp4
xdg-mime default movian.desktop video/x-matroska
xdg-mime default movian.desktop video/x-msvideo
Service Installation¶
Systemd Service (for headless operation)¶
# Create service file
sudo tee /etc/systemd/system/movian.service << 'EOF'
[Unit]
Description=Movian Media Player
After=network.target
[Service]
Type=simple
User=movian
Group=movian
ExecStart=/usr/local/bin/movian --headless
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
EOF
# Create user and enable service
sudo useradd -r -s /bin/false movian
sudo systemctl enable movian
sudo systemctl start movian
Next Steps¶
After successful installation:
- Test Installation: Play a media file to verify everything works
- Explore Plugins: Check out the Plugin Development Guide
- Customize UI: Learn about UI Theming
- Join Community: Visit the Movian Forum for support
Source References:
- configure.linux - Linux-specific build configuration
- README.markdown - Original build instructions
- support/configure.inc - Common configuration options
Accuracy Status: 🟢 Verified on Ubuntu 20.04, Fedora 34, Arch Linux
Last Updated: November 2025
Tested Platforms: Ubuntu 18.04+, Debian 10+, Fedora 32+, CentOS 8+, Arch Linux