Skip to content

Linux build error 0.9.3, suggestion for MainWindow.cpp and m_freedvClient #2204

@otisw

Description

@otisw

Report preparation

  • I used the AI-assisted bug report tool (Help → Support → File an Issue)
  • I have attached a support bundle or log file

What happened?

I tried compiling 0.9.3 on Linux Mint after a git pull and ran into a missing library qt6-websockets-dev. After installing it compiled ok. Google Gemini suggested a change to MainWindow.cpp as shown below in the query I made to help me get it to compile:

It looks like the latest update to AetherSDR introduced a dependency on Qt6 WebSockets for the new "FreeDV Reporter" feature. Because your system is missing that specific development library, the build system is disabling the feature, but the code in MainWindow.cpp isn't properly "guarded" to handle its absence, leading to the compilation errors you're seeing.

Specifically, the compiler is complaining that m_freedvClient was not declared.
The Fix: Install the missing dependency

The most direct way to fix this on Linux Mint (or Ubuntu/Debian) is to install the Qt6 WebSockets development package. Run the following command in your terminal:
Bash

sudo apt update
sudo apt install qt6-websockets-dev

After installing:

Clear your CMake cache to make sure it picks up the new library:
Bash

rm -rf build/*

Re-run the build:
Bash

cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=RelWithDebInfo
cmake --build build -j$(nproc)

Why it failed

If you look at your initial cmake output, there is a smoking gun:

-- Qt6::WebSockets not found — FreeDV Reporter spot source disabled

The AetherSDR developers likely added code to MainWindow.cpp that assumes m_freedvClient always exists, or they forgot to wrap the new code in an #ifdef HAVE_QUICK_WEBSOCKETS (or similar) block. When CMake failed to find the library, it didn't define the necessary macro, the variable was never declared in the header, but the .cpp file tried to use it anyway.
Other missing items (Optional)

While not causing the build to crash, your output shows a few other missing pieces you might want to grab for a "complete" build:

OpenSSL: For encrypted MQTT and SmartLink.

    sudo apt install libssl-dev

HIDAPI: For USB hardware controllers/encoders.

    sudo apt install libhidapi-dev

XKB: For advanced keyboard handling.

    sudo apt install libxkbcommon-dev

Note: You also noticed a warning about implicit capture of ‘this’ via ‘[=]’ is deprecated. You can safely ignore those; they are just "modern C++" warnings to the developers that they should be more explicit in their lambda captures, but they won't stop the build from succeeding.

What did you expect?

Compile after missing library added to Linux, which it did but more suggestions from Google Gemini indicate a possible change to MainWindow.cpp

Steps to reproduce

  1. git pull latest code on Linux Mint
  2. Attempt to compile
  3. Compilation failed initially with missing library

AetherSDR version

0.9.3

Radio model & firmware

Flex 6600 4.218

Operating system

Linux

OS version and hardware

Linux Mint 22.1

Metadata

Metadata

Assignees

No one assigned

    Labels

    GUIUser interfacebugSomething isn't workingmaintainer-reviewRequires maintainer review before any action is takenpriority: lowLow priority

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions