Issues building Citra on ARM

Build process fails at 94% with ’ template argument deduction/substitution failed" (among others)
I’ve included everything I can think of that’ll help. I’m no programmer.

System Information

  • Operating System: Debian 10 w/ kernel 4.19
  • CPU: ARMv7 Processor rev 4 (v7l)
  • GPU: Broadcom Videocore-IV
  • Citra Version [Nightly Build - c4a4b40]
  • Game: N/A
  • Screenshot of Issue (include the full Citra window including titlebar):
    See below for build output

Diagnostic Log
Scanning dependencies of target citra-qt_autogen
[ 93%] Automatic MOC and UIC for target citra-qt
[ 93%] Built target citra-qt_autogen
[ 93%] Automatic RCC for …/…/dist/qt_themes/qdarkstyle/style.qrc
[ 93%] Automatic RCC for …/…/dist/compatibility_list/compatibility_list.qrc
[ 93%] Automatic RCC for …/…/dist/qt_themes/colorful/style.qrc
[ 93%] Automatic RCC for …/…/dist/qt_themes/colorful_dark/style.qrc
[ 94%] Automatic RCC for …/…/dist/qt_themes/default/default.qrc
Scanning dependencies of target citra-qt
[ 94%] Building CXX object src/citra_qt/CMakeFiles/citra-qt.dir/aboutdialog.cpp.o
[ 94%] Building CXX object src/citra_qt/CMakeFiles/citra-qt.dir/applets/mii_selector.cpp.o
In file included from /home/pi/citra/src/./common/bit_field.h:37,
from /home/pi/citra/src/./core/hle/result.h:11,
from /home/pi/citra/src/./core/hle/applets/applet.h:8,
from /home/pi/citra/src/./core/hle/applets/mii_selector.h:10,
from /home/pi/citra/src/./core/frontend/applets/mii_selector.h:9,
from /home/pi/citra/src/./citra_qt/applets/mii_selector.h:9,
from /home/pi/citra/src/citra_qt/applets/mii_selector.cpp:10:
/home/pi/citra/src/./common/swap.h: In instantiation of ‘bool swap_struct_t<T, F>::operator!=(const S&) const [with S = int; T = unsigned int; F = swap_32_t]’:
/home/pi/citra/src/citra_qt/applets/mii_selector.cpp:59:35: required from here
/home/pi/citra/src/./common/swap.h:287:23: warning: comparison of integer expressions of different signedness: ‘unsigned int’ and ‘const int’ [-Wsign-compare]
return swap() != i;
[ 94%] Building CXX object src/citra_qt/CMakeFiles/citra-qt.dir/applets/swkbd.cpp.o
[ 94%] Building CXX object src/citra_qt/CMakeFiles/citra-qt.dir/bootmanager.cpp.o
In file included from /home/pi/citra/src/./common/microprofile.h:23,
from /home/pi/citra/src/citra_qt/bootmanager.cpp:19:
/home/pi/citra/externals/./microprofile/microprofile.h: In function ‘MicroProfileLogEntry MicroProfileMakeLogIndex(uint64_t, MicroProfileToken, int64_t)’:
/home/pi/citra/externals/./microprofile/microprofile.h:831:17: warning: comparison of integer expressions of different signedness: ‘int’ and ‘uint64_t’ {aka ‘long long unsigned int’} [-Wsign-compare]
MP_ASSERT(t == nBegin);
/home/pi/citra/externals/./microprofile/microprofile.h:238:30: note: in definition of macro ‘MP_ASSERT’
#define MP_ASSERT(a) do{if(!(a)){MP_BREAK();} }while(0)
/home/pi/citra/src/citra_qt/bootmanager.cpp: In member function ‘void OpenGLWindow::Present()’:
/home/pi/citra/src/citra_qt/bootmanager.cpp:139:40: error: ‘QOpenGLFunctions_3_3_Core’ was not declared in this scope
auto f = context->versionFunctions<QOpenGLFunctions_3_3_Core>();
/home/pi/citra/src/citra_qt/bootmanager.cpp:139:40: note: suggested alternative: ‘QOpenGLFunctionsPrivate’
auto f = context->versionFunctions<QOpenGLFunctions_3_3_Core>();
/home/pi/citra/src/citra_qt/bootmanager.cpp:139:67: error: no matching function for call to ‘QOpenGLContext::versionFunctions< >()’
auto f = context->versionFunctions<QOpenGLFunctions_3_3_Core>();
In file included from /usr/include/arm-linux-gnueabihf/qt5/QtGui/QOpenGLContext:1,
from /home/pi/citra/src/citra_qt/bootmanager.cpp:10:
/usr/include/arm-linux-gnueabihf/qt5/QtGui/qopenglcontext.h:194:11: note: candidate: ‘template TYPE* QOpenGLContext::versionFunctions() const’
TYPE *versionFunctions() const
/usr/include/arm-linux-gnueabihf/qt5/QtGui/qopenglcontext.h:194:11: note: template argument deduction/substitution failed:
/home/pi/citra/src/citra_qt/bootmanager.cpp:139:67: error: template argument 1 is invalid
auto f = context->versionFunctions<QOpenGLFunctions_3_3_Core>();
make[2]: *** [src/citra_qt/CMakeFiles/citra-qt.dir/build.make:259: src/citra_qt/CMakeFiles/citra-qt.dir/bootmanager.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:2290: src/citra_qt/CMakeFiles/citra-qt.dir/all] Error 2
make: *** [Makefile:141: all] Error 2
[email protected]:~/citra/build $

In order for us to provide better support, we need to see the log generated by Citra. This guide will walk you through how you can obtain the log file: How to Upload the Log File.

No log available. The issue is during the build process. Anyone human have any input?

I’ll bump this - I am stuck here as well. I’ve seen reference elsewhere that this is actually a linker problem. I have no idea if this is correct.

The other issue someone will hit first is the need to explicitly link with libatomic on raspbian buster. I had to add the dependency as compiler arguments to the cmake buildfiles.