What is the lowest version of glibc I can use to build gcc 4.8.3 and libstdc++?
Jonathan Wakely
jwakely.gcc@gmail.com
Thu Oct 5 08:32:03 GMT 2023
On Thu, 5 Oct 2023 at 07:53, Jonathan Wakely <jwakely.gcc@gmail.com> wrote:
>
>
>
> On Thu, 5 Oct 2023, 03:53 조안나, <opehn0@gmail.com> wrote:
>>
>> Situation:
>> I am attempting to migrate legacy C programs to C++11
>> For use in older distributions, I static link libstdc++ through the -static-libstdc++ option
>> C++11 is supported after version 4.8.3 of gcc, So I built it on CentOS7 where gcc 4.8.5 installed.
>>
>> Result showed a dependence on glibc and was only available in distributions with glibc14 and later versions installed.
>
>
> glibc14?
>
>> The required version felt a little high because many customers use old distribution.
>> I came up with the idea of building libstdc++ myself using a lower version of glibc to reduce dependency.
>
>
> Why not just build gcc on the oldest distribution you need to support? You can use a VM or container to create the build environment.
>
>>
>> First I tried using glibc 2.5 for gcc 4.8.3
>> Same, I built it on CentOS7 where gcc 4.8.5 and glibc 2.17 installed.
>> But failed with the error below:
>> configure: error: unsupported system, cannot find sizeof (omp_lock_t)
>
>
> That isn't used by libstdc++, that's libgomp. If you don't need OpenMP you can use --disable-libgomp
>
>>
>> I think I lowered the glibc too much, but I couldn't find a document about compatibility between gcc or libstdc++ and glibc.
>
>
> https://gcc.gnu.org/onlinedocs/gcc-13.2.0/libstdc++/manual/manual/setup.html#manual.intro.setup.prereq documents it. But that's a minimum. Libstdc++ will use newer glibc features such as __cxa_atexit when available, and will be less standards-conforming without it.
Another example is that std::chrono::system_clock will be unavailable
with older glibc versions, unless you configure with
--enable-libstdcxx-time=rt which creates a dependency on librt. Glibc
2.17 moved the clock_gettime and sched_yield (used by
std::this_thread::yield) functions to libc instead of librt, so that
libstdc++ doesn't need librt to provide complete C++11 clock and
thread features.
>
>
>> What is the lowest version of glibc I can use to build gcc 4.8.3 and libstdc++?
>> Can somebody help?
More information about the Libstdc++
mailing list