Is there an existing issue for this?
Is your issue described in the documentation?
Is your issue present in the latest beta/pre-release?
This issue is present in the latest pre-release
Describe the Bug
When building on Ubuntu and having a c++ STL of a different architecture installed like "avr". The tests build process mixes libraries of different architectures and fails:
FAILED: tests/test_sunshine
: && /usr/bin/c++ -fprofile-arcs -ftest-coverage -ggdb -O0 -O3 -DNDEBUG -Wl,--dependency-file=tests/CMakeFiles/test_sunshine.dir/link.d tests/CMakeFiles/test_sunshine.dir/integration/test_config_consistency.cpp.o tests/CMakeFiles/test_sunshine.dir/integration/test_external_commands.cpp.o tests/CMakeFiles/test_sunshine.dir/integration/test_locale_consistency.cpp.o tests/CMakeFiles/test_sunshine.dir/tests_main.cpp.o tests/CMakeFiles/test_sunshine.dir/unit/platform/test_common.cpp.o tests/CMakeFiles/test_sunshine.dir/unit/platform/windows/test_utf_utils.cpp.o tests/CMakeFiles/test_sunshine.dir/unit/test_audio.cpp.o tests/CMakeFiles/test_sunshine.dir/unit/test_display_device.cpp.o tests/CMakeFiles/test_sunshine.dir/unit/test_entry_handler.cpp.o tests/CMakeFiles/test_sunshine.dir/unit/test_file_handler.cpp.o tests/CMakeFiles/test_sunshine.dir/unit/test_http_pairing.cpp.o tests/CMakeFiles/test_sunshine.dir/unit/test_httpcommon.cpp.o tests/CMakeFiles/test_sunshine.dir/unit/test_logging.cpp.o tests/CMakeFiles/test_sunshine.dir/unit/test_mouse.cpp.o tests/CMakeFiles/test_sunshine.dir/unit/test_network.cpp.o tests/CMakeFiles/test_sunshine.dir/unit/test_process.cpp.o tests/CMakeFiles/test_sunshine.dir/unit/test_rswrapper.cpp.o tests/CMakeFiles/test_sunshine.dir/unit/test_stream.cpp.o tests/CMakeFiles/test_sunshine.dir/unit/test_video.cpp.o tests/CMakeFiles/test_sunshine.dir/__/third-party/moonlight-common-c/src/RtspParser.c.o tests/CMakeFiles/test_sunshine.dir/__/src/upnp.cpp.o tests/CMakeFiles/test_sunshine.dir/__/src/cbs.cpp.o tests/CMakeFiles/test_sunshine.dir/__/src/config.cpp.o tests/CMakeFiles/test_sunshine.dir/__/src/display_device.cpp.o tests/CMakeFiles/test_sunshine.dir/__/src/entry_handler.cpp.o tests/CMakeFiles/test_sunshine.dir/__/src/file_handler.cpp.o tests/CMakeFiles/test_sunshine.dir/__/src/globals.cpp.o tests/CMakeFiles/test_sunshine.dir/__/src/logging.cpp.o tests/CMakeFiles/test_sunshine.dir/__/src/crypto.cpp.o tests/CMakeFiles/test_sunshine.dir/__/src/nvhttp.cpp.o tests/CMakeFiles/test_sunshine.dir/__/src/httpcommon.cpp.o tests/CMakeFiles/test_sunshine.dir/__/src/confighttp.cpp.o tests/CMakeFiles/test_sunshine.dir/__/src/rtsp.cpp.o tests/CMakeFiles/test_sunshine.dir/__/src/stream.cpp.o tests/CMakeFiles/test_sunshine.dir/__/src/video.cpp.o tests/CMakeFiles/test_sunshine.dir/__/src/video_colorspace.cpp.o tests/CMakeFiles/test_sunshine.dir/__/src/input.cpp.o tests/CMakeFiles/test_sunshine.dir/__/src/audio.cpp.o tests/CMakeFiles/test_sunshine.dir/__/src/process.cpp.o tests/CMakeFiles/test_sunshine.dir/__/src/network.cpp.o tests/CMakeFiles/test_sunshine.dir/__/src/system_tray.cpp.o tests/CMakeFiles/test_sunshine.dir/__/src/stat_trackers.cpp.o tests/CMakeFiles/test_sunshine.dir/__/src/rswrapper.c.o tests/CMakeFiles/test_sunshine.dir/__/src/platform/linux/kmsgrab.cpp.o tests/CMakeFiles/test_sunshine.dir/__/src/platform/linux/vaapi.cpp.o tests/CMakeFiles/test_sunshine.dir/__/generated-src/xdg-output-unstable-v1.c.o tests/CMakeFiles/test_sunshine.dir/__/generated-src/linux-dmabuf-unstable-v1.c.o tests/CMakeFiles/test_sunshine.dir/__/generated-src/wlr-screencopy-unstable-v1.c.o tests/CMakeFiles/test_sunshine.dir/__/src/platform/linux/wlgrab.cpp.o tests/CMakeFiles/test_sunshine.dir/__/src/platform/linux/wayland.cpp.o tests/CMakeFiles/test_sunshine.dir/__/src/platform/linux/x11grab.cpp.o tests/CMakeFiles/test_sunshine.dir/__/src/platform/linux/portalgrab.cpp.o tests/CMakeFiles/test_sunshine.dir/__/third-party/tray/src/tray_linux.c.o tests/CMakeFiles/test_sunshine.dir/__/src/platform/linux/input/inputtino.cpp.o tests/CMakeFiles/test_sunshine.dir/__/src/platform/linux/input/inputtino_gamepad.cpp.o tests/CMakeFiles/test_sunshine.dir/__/src/platform/linux/input/inputtino_keyboard.cpp.o tests/CMakeFiles/test_sunshine.dir/__/src/platform/linux/input/inputtino_mouse.cpp.o tests/CMakeFiles/test_sunshine.dir/__/src/platform/linux/input/inputtino_pen.cpp.o tests/CMakeFiles/test_sunshine.dir/__/src/platform/linux/input/inputtino_touch.cpp.o tests/CMakeFiles/test_sunshine.dir/__/src/platform/linux/publish.cpp.o tests/CMakeFiles/test_sunshine.dir/__/src/platform/linux/graphics.cpp.o tests/CMakeFiles/test_sunshine.dir/__/src/platform/linux/misc.cpp.o tests/CMakeFiles/test_sunshine.dir/__/src/platform/linux/audio.cpp.o tests/CMakeFiles/test_sunshine.dir/__/third-party/glad/src/egl.c.o tests/CMakeFiles/test_sunshine.dir/__/third-party/glad/src/gl.c.o tests/CMakeFiles/test_sunshine.dir/__/src/nvenc/nvenc_base.cpp.o tests/CMakeFiles/test_sunshine.dir/__/src/nvenc/nvenc_d3d11.cpp.o tests/CMakeFiles/test_sunshine.dir/__/src/nvenc/nvenc_d3d11_native.cpp.o tests/CMakeFiles/test_sunshine.dir/__/src/nvenc/nvenc_d3d11_on_cuda.cpp.o tests/CMakeFiles/test_sunshine.dir/__/src/nvenc/nvenc_utils.cpp.o -o tests/test_sunshine -lcurl -lappindicator3 -ldbusmenu-glib -lgtk-3 -lgdk-3 -lz -lpangocairo-1.0 -lpango-1.0 -lharfbuzz -latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0 -lnotify -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0 third-party/inputtino/liblibinputtino.a -lminiupnpc third-party/moonlight-common-c/enet/libenet.a /usr/lib/x86_64-linux-gnu/libopus.a _deps/ffmpeg/lib/libavcodec.a _deps/ffmpeg/lib/libswscale.a _deps/ffmpeg/lib/libavutil.a _deps/ffmpeg/lib/libcbs.a _deps/ffmpeg/lib/libSvtAv1Enc.a _deps/ffmpeg/lib/libx264.a _deps/ffmpeg/lib/libx265.a _deps/ffmpeg/lib/libhdr10plus.a -lnuma -lva -lva-drm -lva-x11 -lX11 _deps/boost-build/libs/filesystem/libboost_filesystem.a _deps/boost-build/libs/locale/libboost_locale.a _deps/boost-build/libs/log/libboost_log.a _deps/boost-build/libs/program_options/libboost_program_options.a _deps/boost-build/libs/process/libboost_process.a /usr/lib/x86_64-linux-gnu/libssl.so /usr/lib/x86_64-linux-gnu/libcrypto.so /usr/lib/x86_64-linux-gnu/libdrm.so /usr/lib/x86_64-linux-gnu/libcap.so /usr/lib/x86_64-linux-gnu/libevdev.so /usr/lib/x86_64-linux-gnu/libva.so /usr/lib/x86_64-linux-gnu/libva-drm.so /usr/lib/x86_64-linux-gnu/libwayland-client.so /usr/lib/x86_64-linux-gnu/libwayland-server.so /usr/lib/x86_64-linux-gnu/libwayland-egl.so /usr/lib/x86_64-linux-gnu/libwayland-cursor.so -lgbm /usr/lib/x86_64-linux-gnu/libSM.so /usr/lib/x86_64-linux-gnu/libICE.so /usr/lib/x86_64-linux-gnu/libX11.so /usr/lib/x86_64-linux-gnu/libXext.so -lgio-2.0 -lgobject-2.0 -lglib-2.0 -lpipewire-0.3 -ldl -lpulse -lpulse-simple -static-libgcc -static-libstdc++ lib/libgtest.a /usr/lib/x86_64-linux-gnu/libdrm.so /usr/lib/x86_64-linux-gnu/libcap.so /usr/lib/x86_64-linux-gnu/libevdev.so /usr/lib/x86_64-linux-gnu/libva.so /usr/lib/x86_64-linux-gnu/libva-drm.so /usr/lib/x86_64-linux-gnu/libwayland-client.so /usr/lib/x86_64-linux-gnu/libwayland-server.so /usr/lib/x86_64-linux-gnu/libwayland-egl.so /usr/lib/x86_64-linux-gnu/libwayland-cursor.so -lgbm /usr/lib/x86_64-linux-gnu/libSM.so /usr/lib/x86_64-linux-gnu/libICE.so /usr/lib/x86_64-linux-gnu/libX11.so /usr/lib/x86_64-linux-gnu/libXext.so -lgio-2.0 -lgobject-2.0 -lglib-2.0 -lpipewire-0.3 -ldl -lpulse -lpulse-simple /usr/lib/gcc/avr/14.2.0/libgcov.a -lgdk_pixbuf-2.0 -lnotify -lminiupnpc /usr/lib/x86_64-linux-gnu/libopus.a _deps/ffmpeg/lib/libavcodec.a _deps/ffmpeg/lib/libswscale.a _deps/ffmpeg/lib/libavutil.a _deps/ffmpeg/lib/libcbs.a _deps/ffmpeg/lib/libSvtAv1Enc.a _deps/ffmpeg/lib/libx264.a _deps/ffmpeg/lib/libx265.a _deps/ffmpeg/lib/libhdr10plus.a -lnuma -lva -lva-drm -lva-x11 -lX11 /usr/lib/x86_64-linux-gnu/libssl.so /usr/lib/x86_64-linux-gnu/libcrypto.so /usr/lib/gcc/avr/14.2.0/libgcov.a /usr/lib/x86_64-linux-gnu/libevdev.so third-party/libdisplaydevice/src/common/liblibdisplaydevice_common.a _deps/boost-build/libs/charconv/libboost_charconv.a -lquadmath /usr/lib/x86_64-linux-gnu/libicudata.so /usr/lib/x86_64-linux-gnu/libicui18n.so /usr/lib/x86_64-linux-gnu/libicuuc.so -ldl -lrt _deps/boost-build/libs/filesystem/libboost_filesystem.a _deps/boost-build/libs/context/libboost_context.a _deps/boost-build/libs/serialization/libboost_serialization.a _deps/boost-build/libs/thread/libboost_thread.a _deps/boost-build/libs/atomic/libboost_atomic.a _deps/boost-build/libs/date_time/libboost_date_time.a _deps/boost-build/libs/chrono/libboost_chrono.a _deps/boost-build/libs/container/libboost_container.a && :
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/14/libgcov.a(_gcov.o): in function `__gcov_init':
(.text+0x2130): multiple definition of `__gcov_init'; /usr/lib/gcc/avr/14.2.0/libgcov.a(_gcov.o):(.text+0x0): first defined here
/usr/bin/ld: unknown architecture of input file `/usr/lib/gcc/avr/14.2.0/libgcov.a(_gcov_merge_add.o)' is incompatible with i386:x86-64 output
/usr/bin/ld: unknown architecture of input file `/usr/lib/gcc/avr/14.2.0/libgcov.a(_gcov.o)' is incompatible with i386:x86-64 output
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.
The cause is the unspecific glob in:
|
file(GLOB GCC_LIB_DIRS "/usr/lib/gcc/*/*${GCC_MAJOR_VERSION}.*") |
Expected Behavior
The script should use the architecture from the from an environment variable provided by
https://github.com/LizardByte/Sunshine/blob/c4c10a16b889d9a9fd977ff66059d099ebaf5c77/scripts/linux_build.sh and complete successfully.
A possible workaround is to edit CMakeLists.txt to specify the architecture manually.
file(GLOB GCC_LIB_DIRS "/usr/lib/gcc/x86_64-linux-gnu/*${GCC_MAJOR_VERSION}.*")
Additional Context
It is possible to extract the used STL in gcc via:
gcc -xc++ -E -v - /dev/null 2>&1 | grep "^ /usr/lib/gcc/*/${GCC_MAJOR_VERSION}"
Though default sunshine gcc build options should probably included.
There are probably more elegant solutions.
Host Operating System
Linux
Operating System Version
Ubuntu 25.10
Architecture
amd64/x86_64
Package
other (self built)
GPU Type
AMD
GPU Model
na
GPU Driver/Mesa Version
na
Capture Method
None
Apps
Log output
Online logs
No response
Is there an existing issue for this?
Is your issue described in the documentation?
Is your issue present in the latest beta/pre-release?
This issue is present in the latest pre-release
Describe the Bug
When building on Ubuntu and having a c++ STL of a different architecture installed like "avr". The tests build process mixes libraries of different architectures and fails:
The cause is the unspecific glob in:
Sunshine/tests/CMakeLists.txt
Line 36 in c4c10a1
Expected Behavior
The script should use the architecture from the from an environment variable provided by
https://github.com/LizardByte/Sunshine/blob/c4c10a16b889d9a9fd977ff66059d099ebaf5c77/scripts/linux_build.sh and complete successfully.
A possible workaround is to edit
CMakeLists.txtto specify the architecture manually.Additional Context
It is possible to extract the used STL in gcc via:
Though default sunshine gcc build options should probably included.
There are probably more elegant solutions.
Host Operating System
Linux
Operating System Version
Ubuntu 25.10
Architecture
amd64/x86_64
Package
other (self built)
GPU Type
AMD
GPU Model
na
GPU Driver/Mesa Version
na
Capture Method
None
Apps
Log output
Online logs
No response