GNU Radio must be recompiled for C++ OoT modules to work.
Description:
Arch Linux has recently updated its shipped GCC version to GCC 14.1. However, this package has last been compiled with GCC 13.
For the vast majority of software, this is not a real problem, and it does not really matter if GCC has been updated for the sake of determining when a package ought to be repackaged. However, GNU Radio features a module system, which allows users to create their own blocks using C++ and create flowgraphs with said blocks.
Flowgraphs themselves are Python code, but the blocks are in C++. To support this, GNU Radio uses PYBIND11. PYBIND11 allows C++ code to be exported as python modules. However, PYBIND11 does not support different compiler versions, so one cannot load modules compiled with GCC 14 into GNU Radio projects with this packaged version.
I have verified that the issue is caused by the compiler version mismatch by recompiling GNU Radio myself with GCC 14, and observing that there is no longer an issue with calling blocks from C++ OoT modules.
Additional info:
- package version(s): 3.10.10.0-1
Steps to reproduce:
With GCC 14.1 installed on one's system, create a C++ module using the gr_modtool. There is a tutorial here: https://wiki.gnuradio.org/index.php?title=Creating_C%2B%2B_OOT_with_gr-modtool
After "make install" and "sudo ldconfig", and with PYTHONPATH=/usr/local/lib/python3.12/site-packages and LDCONFIG recognizing *.so files in /usr/local/lib, the system should work when you attempt to make a flowgraph with your module's block. Instead, you will get a cryptic error that may say something like "Could not import gnuradio::sync_block" in the terminal output in gnuradio-companion.
If you wish for me to provide a module to make demonstration easier, I can do that; just tell me where/how to upload it.