spinicist / QUIT

A set of tools for processing Quantitative MR Images
Mozilla Public License 2.0
59 stars 20 forks source link

qi v3.4 not working on ubuntu 20.04 #43

Open RicardoRios46 opened 5 months ago

RicardoRios46 commented 5 months ago

Hello!

First of all thank you for developing qi. Very handy tool!

I wan't able to run qi on a machine with ubutnu 20.04. Got the following error: qi: /lib/x86_64-linux-gnu/libc.so.6: version GLIBC_2.32 not found (required by qi)

I checked glib version on the machine with ldd --version and it has GLIBL 2.31. I guess thats the reason but I saw in the README file to contact you if qi wasn't working on a linux distribution. Se here it goes!

qi v3.3 works on ubuntu 20.04 without problems.

Additional note: I want to try compiling qi by myself but couldn't find the build.sh mentioned in the developers documentation :S

Good day!

spinicist commented 5 months ago

build.sh became bootstrap.sh a while ago. A PR to make the docs and the script name match would be appreciated, I don't mind which name it is.

For a statically compiled application like QUIT, GLIBC is the fundamental thing that determines backwards compatibility on Linux, and the GLIBC version is determined by the system you compile on. Binaries compiled with an older GLIBC will work on newer systems, but not vice versa.

The Linux binaries are built using the Github CI. Until a year ago this used Ubuntu 16.04, which had an ancient GLIBC version. Github deprecated the 16.04 machines, so I had to upgrade. For some reason I jumped to 22.04 and not 20.04. I can't remember exactly why I skipped over 20.04 but it may have been whether GCC 11 was available in the 20.04 image at the time.

I can look at rolling back the CI to 20.04 but would have to play shenanigans with git tags to recompile v3.4, so this would likely only affect v3.5, which I didn't have plans to roll any time soon. I'm happy to review that decision if this is problematic for more people.

Let me know whether you manage to build it yourself using bootstrap.sh.

gdevenyi commented 5 months ago

What about trying to build a musl static binary?

https://medium.com/@neunhoef/static-binaries-for-a-c-application-f7c76f8041cf

spinicist commented 5 months ago

I have looked at musl and it is very tempting. However, my one attempt at using it was not successful. My memory is that you essentially have to build on Alpine Linux, and then getting vcpkg to build the dependencies was a nightmare.

If someone has the time to investigate further, as always, I am happy to look at PRs. But the path of least resistance for me is going back to Ubuntu 20.04 for v3.5. Tagging a release isn't a big deal, so perhaps I should do that with the repo as is.

gdevenyi commented 5 months ago

Ubuntu 20.04 for v3.5

20.04 went out of support March 23, 2023, FYI. Something to consider is what the support policy will be for old systems.

spinicist commented 5 months ago

The support policy is currently the pragmatic option of "What is the oldest version of GLIBC available in the Github CI". Which I kind of broke by going all the way to 22.04 and why I'm happy to revert back to 20.04 (provided that GCC 11 is available there now, I suspect it is).

RicardoRios46 commented 4 months ago

Hello again.

Thank you for the reply (and sorry for my super late reply).

Looks like ubuntu 20.04.02 runs gcc 9.4.0. So maybe that is why you skipped it.

I did a pull request updating the README with the ubuntu version used for compiling the executable. Same PR changes build.h to buildstrap.h in the documentation.