Closed ewenewen closed 6 years ago
Hi Ewen,
very courageous of you to use gappa at this early stage! ;-)
OpenMP is a constant troublemaker in genesis and gappa... There are a couple of reasons that could be the culprit here:
It might be that the OpenMP library is actually missing. Try sudo apt-get install libgomp1
, and then try to compile gappa again: make clean && make
.
By default, gappa compiles system libraries statically in order to get a portable binary. This can cause issues with OpenMP. You can try to build the non-static version:
make clean
mkdir build
cd build/
cmake -DGAPPA_BUILD_STATIC=OFF ..
make
This way, the binary will only work on your system, but that should be okay for now, I guess ;-)
In the beginning of the CMake output, it says that the compiler is GNU 7.3.1
, and found at /usr/bin/c++
. I've seen cases were CMake was mismatching these, and instead used Clang...
Can you run this please and report the output:
$ ls -l /usr/bin/c++
In my case for example, this leads to another symlink, which then links to clang
. So, follow the link chain until you reach something that tells you what hides behind c++
:
$ ls -l /usr/bin/c++
lrwxrwxrwx 1 root root 21 Sep 19 2014 /usr/bin/c++ -> /etc/alternatives/c++
$ ls -l /etc/alternatives/c++
lrwxrwxrwx 1 root root 20 Aug 23 2017 /etc/alternatives/c++ -> /usr/bin/clang++-3.9
As a side note, you said that you build and installed the needed libraries beforehand. That should actually not be needed if you use git clone --recursive https://github.com/lczech/gappa.git
. This will also pull all three (CLI11, genesis and sparsepp).
Lastly, if you are using gappa now (without documentation and with just a few of the planned features), may I ask what you want to use it for? Always good to now which features to concentrate on!
So long Lucas
Thanks a lot for your detailed answer and kind help.
I'm not running a Ubuntu-like distribution, so I cannot apt-get
packages. But it seems I have the library installed:
$ find /usr/ -name "libgomp*"
/usr/lib/libgomp.so
/usr/lib/libgomp.so.1
/usr/lib/libgomp.so.1.0.0
/usr/lib/libgomp.spec
/usr/lib32/libgomp.so
/usr/lib32/libgomp.so.1
/usr/lib32/libgomp.so.1.0.0
/usr/lib32/libgomp.spec
/usr/share/info/libgomp.info.gz
I tried to build the non-static version, following your advice, it worked! (the first try was not lucky, but after a reboot or some action I don't recall, it was)
/usr/bin/c++
is not a link:
$ ls -l /usr/bin/c++
-rwxr-xr-x 4 root root 1002688 Mar 13 20:33 /usr/bin/c++
So option 2 works, many thanks for that!
As for my usage of gappa, for now I'd be interested in visualization (visualize-color
) and also at some point Squash clustering. Usually, as soon as I have a jplace
file, I tend to import it in R and perform my analyses/visualization. But doing so has some downsides (tree manipulation and visualization in R is a bit tedious). I welcome any other alternatives. :)
Nice! I think I will then deactivate the static linking by default. It's the second time this has caused trouble, and most users won't need the static binary if they want to build on their own.
c++ --version
just to make sure that you are actually using the correct GCC. But as it works now, this is not needed.The issue with placement data is that as of now, there are only a few standard methods for working with these data, e.g., squash, or simple heat tree visualizations. The data are quite useful for many purposes, but this usually requires coding. Thus, I know what you are going through...
So, gappa is meant as a simple command line tool for the standard methods. But it uses genesis as the backend for all functionality. Thus, if you want to learn some C++, you can start coding your analyses with genesis, which already offers many useful functions for working with placement data.
Alternatively, there is ggtree for R, which you might find useful. It can read jplace files (as far as I know), but I don't know what else it can do with them.
I'm going to close this issue now. If there is anything else, don't hesitate to ask. Lucas
For Archlinux, this is a little more complicated than that :P Here's a first (old) lead if someone comes upon this current issue: https://bbs.archlinux.org/viewtopic.php?id=182444
I am already using ggtree
, which I find really convenient, except for plotting exactly what I want, in a circular way. For now I managed not to dive into genesis, but eventually I might do it anyway, it looks cool! :)
Thanks again! Ewen
Okay, thanks for the link.
I had another thought about what might have cause the issue: It is possible that the gcc version on Arch does not provide a static version of the OpenMP library (.a), but only the dynamic one (.so). I had that issue with Clang before, and hence couldn't build a static version of gappa with Clang.
Anyway, I now changed the default to compiling with dynamic linking, so now it should work for more compilers and OSs.
Hi and first of all thanks for your work :)
I'm having troubles compiling Gappa on my personal GNU/Linux laptop, though it works on a computer cluster I have access to. After building/installing the necessary libraries (CLI11, genesis, sparsepp), the
make
command gives me that output:The issue seems related to the OpenMP library, that I installed, and it seems to be detected. I am using Archlinux, with kernel 4.15.11
Any ideas? Thanks! Ewen