tttapa / docker-arm-cross-toolchain

Modern GCC cross-compilation toolchains for Raspberry Pi
https://tttapa.github.io/Pages/Raspberry-Pi
MIT License
85 stars 15 forks source link

Possible to update glibc version? #2

Open mfreeborn opened 1 year ago

mfreeborn commented 1 year ago

I see that the current version of glibc in these toolchains is 2.27, however, my application required (at least) 2.30. Would it be possible to release a new batch of toolchains with updated libraries?

Another question... how would one go about customising the sysroot within the finished toolchain directory? I would like to add a few more libraries to sysroot, specifically I would like to build an up to date version of libcamera: https://libcamera.org/getting-started.html.

tttapa commented 1 year ago

I see that the current version of glibc in these toolchains is 2.27, however, my application required (at least) 2.30. Would it be possible to release a new batch of toolchains with updated libraries?

The glibc version is deliberate: the toolchain's glibc version should be the same or older than the glibc version that is installed on the target system.
Since many current Linux distributions still ship with older versions of glibc, upgrading the one of the toolchains would render them unable to compile software for these distributions (e.g. RHEL 8 and Debian 10 use glibc 2.28, Ubuntu 18.04 uses glibc 2.27).

Out of interest, what application specifically requires such a recent version of glibc?

Another question... how would one go about customising the sysroot within the finished toolchain directory? I would like to add a few more libraries to sysroot, specifically I would like to build an up to date version of libcamera: https://libcamera.org/getting-started.html.

The sysroot is read-only by default to avoid accidentally overwriting or modifying it. To customize it anyway, you can create a copy and make it writable (chmod -R u+w sysroot-copy), and then simply install the packages into it (e.g. by setting DESTDIR or CMAKE_STAGING_PREFIX).
Alternatively, you can simply keep your custom packages in a separate staging directory, without merging it with the sysroot. As long as you're using a decent build system generator, you can just tell it to look for packages in that staging directory (for CMake, this is again CMAKE_STAGING_PREFIX).

These links could be useful:

mfreeborn commented 1 year ago

That's useful information to continue my research, thank you. Its libcamera that specifically requires >= glibc 2.30 for a function within pthreads. I see a fresh install of Raspberry Pi OS on my Raspberry Pi 0W has glibc 2.31.