'Why do I get linker errors with -std=gnu++20 but not -std=c++20?

I'm trying to update an application to be built with C++20. The application compiles fine with "-std=c++20" but if I change it to "-std=gnu++20" then I'm getting linker errors. The linker errors are a few missing symbols in my application provided by static libraries.

I work on a large application and the missing symbols are in parts of the application that I don't know at all. I can find where the source files exist but not the path from source file to the executable. I venture there's at least two static libraries involved (file.cc is in file.a which is in file.b ...). I tried using "nm -a" to determine which library the symbol is coming from so I can compare to the c++20 build but haven't found the right options yet. We're using boost::build and I tried running with "-d2" as well but it's not been of much help.

How can I debug the problem?



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source