ABI Compatibility or Why We Have STABLE And HEAD
GNU libc has recently had a major change in the way symbols are exposed to programs. Version 2.2 of glibc was the last one which used unversioned symbols. The new glibc, version 2.3, uses versioned symbols. As a result, glibc 2.2's dynamic linker is unable to load glibc 2.3's libc and vice versa.
The LNX-BBC build system as it existed in March 2003 (and is still the case today in the STABLE branch) relied on the dynamic linker in /lib to perform symbol resolution for all shared libraries as binaries were built. This meant that we could not expect our build system, gargoyle.lnx-bbc.com, to build glibc 2.3 and then successfully link binaries against it. We created the STABLE branch at that time which retains the older version of glibc (and also gcc, for similar reasons). This has freed us to try out whatever changes might eventually solve the problem in the HEAD branch.
The solution we have settled on is to cross-compile the entire LNX-BBC, allowing us to treat the LNX-BBC ISO as an embedded system. Using this cross-compilation scheme, we have been able to build and link some binaries against glibc 2.3 on systems using glibc 2.2. However, many other packages use faulty mechanisms to determine whether or not they are being cross-compiled, or simply don't support cross-compilation, and so it will probably be a while before we can resolve this issue.
Until then, be aware that if you are attempting to build an LNX-BBC ISO on a system which uses glibc 2.2.x, an arch get from the research branch will definitely not work. A checkout from stable may or may not work, but we can as least provide reasonable suggestions that might make it work. If you are building on a system running glibc 2.3.x, please use the research branch but be aware that certain packages are currently failing, and you will not get an ISO.
![[LNX-BBC]](logo.png)