Skip to content

GCC throws error when compiling gtest dependency

Hi Marta,

I have run into an isssue while attempting to compile the l-edge code using the following specs:

  • OS: Ubuntu 22.04.5 LTS
  • Kernel: Linux 6.8.0-52-generic
  • Architecture: x86-64
  • Compiler: GCC 11.4.0

When I run make then I get the following error:

[  4%] Building CXX object _deps/armadillo-build/CMakeFiles/armadillo.dir/src/wrapper1.cpp.o
[  9%] Building CXX object _deps/armadillo-build/CMakeFiles/armadillo.dir/src/wrapper2.cpp.o
[ 13%] Linking CXX shared library libarmadillo.so
[ 13%] Built target armadillo
[ 18%] Building CXX object src/CMakeFiles/l-edge.dir/main.cpp.o
[ 22%] Building CXX object src/CMakeFiles/l-edge.dir/utils.cpp.o
[ 27%] Building CXX object src/CMakeFiles/l-edge.dir/eff_xps.cpp.o
[ 31%] Building CXX object src/CMakeFiles/l-edge.dir/eff_xas.cpp.o
[ 36%] Linking CXX executable l-edge
[ 36%] Built target l-edge
[ 40%] Building CXX object _deps/googletest-build/googletest/CMakeFiles/gtest.dir/src/gtest-all.cc.o
In file included from /home/ua22484/CODE/l-edge/build/_deps/googletest-src/googletest/src/gtest-all.cc:42:
/home/ua22484/CODE/l-edge/build/_deps/googletest-src/googletest/src/gtest-death-test.cc: In function ‘bool testing::internal::StackGrowsDown()’:


/home/ua22484/CODE/l-edge/build/_deps/googletest-src/googletest/src/gtest-death-test.cc:1301:24: error: ‘dummy’ may be used uninitialized [-Werror=maybe-uninitialized]


 1301 |   StackLowerThanAddress(&dummy, &result);
      |   ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
/home/ua22484/CODE/l-edge/build/_deps/googletest-src/googletest/src/gtest-death-test.cc:1290:13: note: by argument 1 of type ‘const void*’ to ‘void testing::internal::StackLowerThanAddress(const void*, bool*)’ declared here


 1290 | static void StackLowerThanAddress(const void* ptr, bool* result) {
      |             ^~~~~~~~~~~~~~~~~~~~~
/home/ua22484/CODE/l-edge/build/_deps/googletest-src/googletest/src/gtest-death-test.cc:1299:7: note: ‘dummy’ declared here


 1299 |   int dummy;
      |       ^~~~~
cc1plus: all warnings being treated as errors
make[2]: *** [_deps/googletest-build/googletest/CMakeFiles/gtest.dir/build.make:76: _deps/googletest-build/googletest/CMakeFiles/gtest.dir/src/gtest-all.cc.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:1139: _deps/googletest-build/googletest/CMakeFiles/gtest.dir/all] Error 2
make: *** [Makefile:166: all] Error 2

Apparently, this has been fixed in https://github.com/google/googletest/pull/3024. I managed to fix this issue by declaring explicitly a dependency on GoogleTest, as described in https://google.github.io/googletest/quickstart-cmake.html, and will open a merge request related to this patch.