Dolphin, the GameCube and Wii emulator - Forums

Full Version: struggling to build Dolphin 5.0 on Manjaro Linux
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Hi,

I want to netplay with someone running Dolphin 5.0 on Windows, but I am running Manjaro Linux, and the 'dolphin-emu' package provided in the repos seems to be 5.0-11832.

Since netplay requires both players to have the same version of Dolphin I am trying to build and install Dolphin 5.0 using the Building Dolphin on Linux guide (https://wiki.dolphin-emu.org/index.php?t...n_on_Linux). However I am running into issues.

I could not find packages listed in required dependencies (I guess they are named differently on different distros?) so I installed all the listed dependencies for dolphin-emu-git in the AUR (https://aur.archlinux.org/packages/dolphin-emu-git/), but I cannot be 100% sure I have all the needed dependencies.

Then I followed exactly the steps laid out in the guide, which all seem to complete successfully until I try to run 'make'--which fails.

Initially I had the same problem as the user in this thread -- https://forums.dolphin-emu.org/Thread-pr...rom-source
The advice given was to remove the 'libsoundtouch-dev' package, I had a package 'soundtouch' installed on my system, I removed the packages that require that for now, and it's now successfully progressing past that step.

Now it fails on this
Code:
/home/cyvern/dolphin-emu/Source/Core/Common/x64CPUDetect.cpp:45:12: error: ambiguating new declaration of ‘u64 _xgetbv(u32)’
  45 | static u64 _xgetbv(u32 index)
     |            ^~~~~~~
In file included from /usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/include/immintrin.h:43,
                from /usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/include/x86intrin.h:32,
                from /home/cyvern/dolphin-emu/Source/Core/Common/Intrinsics.h:12,
                from /home/cyvern/dolphin-emu/Source/Core/Common/x64CPUDetect.cpp:10:
/usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/include/xsaveintrin.h:60:1: note: old declaration ‘long long int _xgetbv(unsigned int)’
  60 | _xgetbv (unsigned int __A)
     | ^~~~~~~
/home/cyvern/dolphin-emu/Source/Core/Common/x64CPUDetect.cpp:45:12: warning: ‘u64 _xgetbv(u32)’ defined but not used [-Wunused-function]
  45 | static u64 _xgetbv(u32 index)
     |            ^~~~~~~
make[2]: *** [Source/Core/Common/CMakeFiles/common.dir/build.make:616: Source/Core/Common/CMakeFiles/common.dir/x64CPUDetect.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:892: Source/Core/Common/CMakeFiles/common.dir/all] Error 2
make: *** [Makefile:183: all] Error 2
the user from the thread I mentioned above also ran into this issue but it doesn't seem like it was resolved and I feel a little lost trying to understand the discussion that comes after it.

Any advice on how to successfully build and install Dolphin 5.0 on my system? Or if this is something of an XY problem, I'd appreciate clarification on Dolphin versions and netplay between Windows and Linux.
(04-18-2020, 02:04 AM)JosJuice Wrote: [ -> ]Try applying this change: https://github.com/dolphin-emu/dolphin/c...eabed2b5a8

Thanks for your help, I appreciate it!
I am not sure on to apply that? I am not very familiar with git and building packages from source, sorry. I have tried to search the web but I haven't managed to find anyone who seems to be trying to do the same thing
(04-18-2020, 05:20 AM)cyvern Wrote: [ -> ]Thanks for your help, I appreciate it!
I am not sure on to apply that? I am not very familiar with git and building packages from source, sorry. I have tried to search the web but I haven't managed to find anyone who seems to be trying to do the same thing

It might be easiest for you to do it manually. Open Source/Core/Common/x64CPUDetect.cpp, look at the page I linked, and replace the lines that are highlighted in red (that have a minus on the left) with the lines that are highlighted in green (that have a plus on the left).
(04-18-2020, 05:32 AM)JosJuice Wrote: [ -> ]It might be easiest for you to do it manually. Open Source/Core/Common/x64CPUDetect.cpp, look at the page I linked, and replace the lines that are highlighted in red (that have a minus on the left) with the lines that are highlighted in green (that have a plus on the left).

Thank you, I have done that and it solved that issue!

However it is unfortunately still failing further along the process with a different error:
Code:
[ 30%] Building CXX object Source/Core/VideoBackends/OGL/CMakeFiles/videoogl.dir/RasterFont.cpp.o
In file included from /usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/include-fixed/limits.h:194,
                from /usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/include-fixed/syslimits.h:7,
                from /usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/include-fixed/limits.h:34,
                from /home/cyvern/dolphin-emu/Build/Source/CMakeFiles/pch.dir/pch.h:35,
                from <command-line>:
/home/cyvern/dolphin-emu/Source/Core/VideoBackends/OGL/RasterFont.cpp:18:18: error: expected unqualified-id before numeric constant
  18 | static const int CHAR_WIDTH = 8;
     |                  ^~~~~~~~~~
make[2]: *** [Source/Core/VideoBackends/OGL/CMakeFiles/videoogl.dir/build.make:182: Source/Core/VideoBackends/OGL/CMakeFiles/videoogl.dir/RasterFont.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:1188: Source/Core/VideoBackends/OGL/CMakeFiles/videoogl.dir/all] Error 2
make: *** [Makefile:183: all] Error 2

I've searched for this error and it seems like it's an issue that's now fixed for newer versions of dolphin? Would it be better to try install a development version of dolphin on my system and ask anyone I'd like to netplay with to also install that version, or should I keep trying to get 5.0 to build?

Again, I really appreciate the help Smile
If the others are fine with using a development version, then that is what I would recommend, both to make Dolphin easier to build for you and because the newer versions generally work better,

If you want to fix the CHAR_WIDTH problem, you can replace every occurrence of "CHAR_" in Source/Core/VideoBackends/OGL/RasterFont.cpp with something else, for instance "CHARACTER_".
(04-18-2020, 06:38 AM)JosJuice Wrote: [ -> ]If the others are fine with using a development version, then that is what I would recommend, both to make Dolphin easier to build for you and because the newer versions generally work better,

If you want to fix the CHAR_WIDTH problem, you can replace every occurrence of "CHAR_" in Source/Core/VideoBackends/OGL/RasterFont.cpp with something else, for instance "CHARACTER_".

after replacing the 'CHAR_'s with 'CHARACTER_'s in that file, 'make' completed successfully and the 'make install' went fine

However the resulting Dolphin couldn't run any games--it came up with a "WriteRest: op out of range" error when I attempted to launch them.

I followed the Building Dolphin on Linux guide but without the step for 5.0 to install the latest development version and it works perfectly--I think we'll go with the dev versions.

Thank you so much for all your help with this! Big Grin
(04-18-2020, 10:27 AM)cyvern Wrote: [ -> ]However the resulting Dolphin couldn't run any games--it came up with a "WriteRest: op out of range" error when I attempted to launch them.

To fix that, you need to add the flag -fno-pie (or equivalent) when compiling.
(04-18-2020, 06:50 PM)JosJuice Wrote: [ -> ]To fix that, you need to add the flag -fno-pie (or equivalent) when compiling.

It worked! I wasn't sure on how to do that but I tried making the change I found here (https://github.com/dolphin-emu/dolphin/p...6325909f5d) and that did it! I think I am still going to go with the development versions but it is great to be able to install 5.0 stable.

Thanks again!