Pre-configured Docker image for building native C++ applications targeting LG webOS TVs. Based on Ubuntu 22.04 (Jammy) with GCC 11 for ABI compatibility with webOS TV system libraries.
| Platform | Tag | Use Case |
|---|---|---|
linux/arm/v7 | armhf | webOS TVs with 32-bit ARM userspace |
linux/arm64 | aarch64 | Newer webOS TVs with 64-bit ARM |
libplayerAPIs.so stub for linking against the Starfish Media Pipeline (real library lives on the TV)# Set up QEMU if cross-compiling from x86_64
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
# Build your project
docker run --rm --platform linux/arm/v7 \
-v "$(pwd):/src" -w /src \
dasunnimantha/webos-sdk:latest bash -c '
mkdir -p build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release -DWEBOS_BUILD=ON \
-DCMAKE_C_COMPILER=gcc-11 -DCMAKE_CXX_COMPILER=g++-11
make -j$(nproc)
# Patch interpreter for webOS TV
patchelf --set-interpreter /lib/ld-linux.so.3 your-app
patchelf --replace-needed ld-linux-armhf.so.3 ld-linux.so.3 your-app || true
'
docker run --rm --platform linux/arm64 \
-v "$(pwd):/src" -w /src \
dasunnimantha/webos-sdk:latest bash -c '
mkdir -p build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release -DWEBOS_BUILD=ON \
-DCMAKE_C_COMPILER=gcc-11 -DCMAKE_CXX_COMPILER=g++-11
make -j$(nproc)
patchelf --set-interpreter /lib/ld-linux-aarch64.so.1 your-app || true
'
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
with:
platforms: arm
- name: Build in webOS SDK container
run: |
docker run --rm --platform linux/arm/v7 \
-v "${{ github.workspace }}:/src" -w /src \
dasunnimantha/webos-sdk:latest bash -c '
mkdir -p build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release -DWEBOS_BUILD=ON \
-DCMAKE_C_COMPILER=gcc-11 -DCMAKE_CXX_COMPILER=g++-11
make -j$(nproc)
patchelf --set-interpreter /lib/ld-linux.so.3 your-app
'
webOS TVs ship with glibc 2.35 and GLIBCXX up to 3.4.29. Building with newer compilers or distros produces binaries that depend on symbols not available on the TV. Ubuntu 22.04 (Jammy) with GCC 11 matches these constraints exactly.
For extra safety, add -static-libstdc++ -static-libgcc to your linker flags to statically link the C++ runtime, eliminating any dependency on the TV's libstdc++ version.
The image includes a stub libplayerAPIs.so so your code can link against the Starfish Media Pipeline API at compile time. The real shared library is present on the TV at runtime. Include the StarfishMediaAPIs.h header in your project and link with -lplayerAPIs.
latest — most recent build1.0.0 — initial releaseContent type
Image
Digest
sha256:9c277c69a…
Size
194.8 MB
Last updated
7 months ago
docker pull dasunnimantha/webos-sdk