fmi-basel / faim-cryoflare

CryoFLARE: FMI Live Analysis and Reconstruction Engine for single particle Cryo EM data
GNU General Public License v3.0
4 stars 0 forks source link

Centos7 version not working #1

Open timeu opened 4 years ago

timeu commented 4 years ago

I can't get the binary distribution (cryoflare_1.8_Centos7.tgz.) running on a Centos 7.6 workstation because cryoflare seems to require a newer C++ Standard Library > 3.4.21

/cryoFLARE_1_8/cryoflare: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /cryoFLARE_1_8/cryoflare)
/cryoFLARE_1_8/cryoflare: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.22' not found (required by /cryoFLARE_1_8/cryoflare)
/cryoFLARE_1_8/cryoflare: /lib64/libstdc++.so.6: version `CXXABI_1.3.11' not found (required by /cryoFLARE_1_8/cryoflare)
/cryoFLARE_1_8/cryoflare: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.26' not found (required by /cryoFLARE_1_8/cryoflare)
/cryoFLARE_1_8/cryoflare: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /cryoFLARE_1_8/cryoflare)
/cryoFLARE_1_8/cryoflare: /lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by /cryoFLARE_1_8/cryoflare)
/cryoFLARE_1_8/cryoflare: /lib64/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by /cryoFLARE_1_8/cryoflare)

However on Centos 7 the latest version is 3.4.19. The software collections (https://wiki.centos.org/AdditionalResources/Repositories/SCL) do have newer verisons however only for the header files and the compiler.

[root@pcl-imp-20 build]# strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_DEBUG_MESSAGE_LENGTH

I tried to install it from source using the newer gcc however qt-charts is missing in the Centos/EPEL repos.

What is the best way to get CryoFLARE working on a Centos 7.x workstation?

andschenk commented 4 years ago

Thanks for reporting the issue. Unfortunately, as you already mentioned the Centos 7 EPEL repos don't provide QtCharts. To compile CryoFLARE on a Centos7/RHEL7 system, one has to either install a recent version of Qt using the installer from www.qt.io or one has to compile Qt from source.

To avoid users having to roll out their own Qt install, I statically compiled Qt and statically linked the Qt libraries into the CryoFLARE binary. As recent Qt versions don't compile with the Centos 7 stock gcc 4.8, I had to use a newer compiler (manually installed) and that was where the newer GLIBCXX ABI came in.

In now recompiled Qt and CryoFLARE with the gcc from devtoolset-8 . This should keep the ABI at 3.4.19 and should make it compatible with the stock libstdc++.so.

I uploaded the binary here: http://www.cryoflare.org/download-and-installation/cryoflare_1.8_devtoolset8.zip

Could you give it a try and let me know if that works for you?

timeu commented 4 years ago

@andschenk great thanks for the quick fix. I had to install the unixODBC and postgresql-libs and libzstd packages but now it works