LeelaChessZero / lc0

The rewritten engine, originally for tensorflow. Now all other backends have been ported here.
GNU General Public License v3.0
2.47k stars 534 forks source link

Unable to compile on openSUSE (should be similar to Fedora) #610

Closed putztzu closed 4 years ago

putztzu commented 5 years ago

openSUSE 15 (fully updated) gcc 7.3.1 meson 0.46.0 ninja 1.8.2 OpenBLAS package and version openblas-pthreads_0_2_20-gnu-hpc-devel-static .rpm OpenBLAS development headers packages for the above also installed

lc0 cloned from github repo 12/24/2018

Specific questions: Is a cross-compiler of some sort required? See log, looking for cross-compile capability Did a search of the system, verified crti.o does not exist anywhere, should this have been generated or part of a missing package? Thx.

Meson Log Build started at 2018-12-24T14:19:30.223939 Main binary: /usr/bin/python3 Python system: Linux The Meson build system Version: 0.46.0 Source dir: /home/tony/github/lc0 Build dir: /home/tony/github/lc0/build/release Build type: native build Project name: lc0 Sanity testing C++ compiler: c++ Is cross compiler: False. Sanity check compiler command line: c++ /home/tony/github/lc0/build/release/meson-private/sanitycheckcpp.cc -o /home/tony/github/lc0/build/release/meson-private/sanitycheckcpp.exe Sanity check compile stdout:

Sanity check compile stderr: /usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: cannot find crt1.o: No such file or directory /usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: cannot find crti.o: No such file or directory /usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: cannot find -lm collect2: error: ld returned 1 exit status

meson.build:17:0: ERROR: Compiler c++ can not compile programs.

:

borg323 commented 5 years ago

The linker is not finding the files needed for compiled programs to run. This looks like an installation problem, have you been able to compile other programs (and in particular c++ ones)?

putztzu commented 5 years ago

Thx for your reply but I don't think that's the issue in my case. Every other reported issue I found on the Internet was as you suggest, but in those cases the file was on the system but in a different location. In my case, I searched my entire system and didn't find the missing files.

In some reported cases, there was some description that the files were related to cross-compiling, and for that reason the files were needed to compile a boot targeting the dissimilar platform. But, that's unclear because in other instances the files were supposed to be in a subdirectory of gcc.

In any case, I'm now in the process of building in an ubuntu(I think that's what your documentation is based on) 18.10 to see if these files are somehow provided in a way that's not in openSUSE.

borg323 commented 5 years ago

This seems like a missing package. I don't use opensuse, but https://software.opensuse.org/package/glibc-devel seems like a likely candidate.

putztzu commented 5 years ago

I found it. I think your documentation may be missing the Ubuntu package "build-essentials" (should be verified). On openSUSE, the corresponding package is likely libstdc++6 which provides the standard C libraries.

Build now proceeds, until when it doesn't find a Tensorflow backend which I'm now investigating

borg323 commented 5 years ago

I'm re-opening this to track the build instruction updates. Regarding tensorflow, it should be disabled by default so this is a bit strange. What is the build command you are using?

putztzu commented 5 years ago

As per instructions, am running build.sh in the root of the cloned repo. Yes, whether the "build-essentials.deb" package is required should be verified on a Debian/Ubuntu system, But on an openSUSE (and likely Fedora) the "libstdc__6" package fulfills the missing requirement for file crti.o.

As for the Tensorflow backend, because that is different than the original issue I asked about here, I opened a new issue and posted the related log there.

putztzu commented 5 years ago

Have created a Pull Request with full, complete instructions and unattended script that should do the whole build in one click.

Anyone who wants a peek at this before it's approved can view on my copy of the lc0 github site.

https://github.com/putztzu/lc0/blob/putztzu-patch-1/openSUSE_install.md

putztzu commented 5 years ago

This issue can be considered superceded by Pull Request https://github.com/LeelaChessZero/lc0/pull/675

Naphthalin commented 4 years ago

@borg323 as you reopened the issue, is this still relevant? Otherwise, the author of this issue suggested #675 to be a fix (which got merged).