(GalaxyMaster) wrote: > My use case in not standard since I am actually building > these into a shared library using libtool, so libtool sees the same object > file > listed twice and tries to resolve it by renaming one of them and then includes > both in the resulting link command to produce a shared object.
Indeed, this explains why you get a link error then. > I am building a Linux distribution from ground up. > > > - building what kind of library or binary in which way? > > I am basically building what is directly against GNU Lib's philosophy (section > 2.2 of the manual), a shared library containing every single compilable module > with all functions defined as weak symbols. ... > > I clearly understand that my use case is not something supported or endorsed > by > the GNU Lib project and am not trying to change that, but it is another avenue > to test stuff, which may be valueable to the project. I have nothing against experiments. But you have to take into account that GNU gnulib (that's the actual name, not "GNU Lib") does not attempt to have backwards compatibility constraints as usual for shared libraries. This is written in the documentation https://www.gnu.org/software/gnulib/manual/html_node/Steady-Development.html and can be highlighted by a few entries of the NEWS file: getprogname The include file is changed from "getprogname.h" to <stdlib.h>. This means that source code that uses gnulib needs adaptation. scratch_buffer The function 'gl_scratch_buffer_dupfree' is removed. careadlinkat This module no longer provides the careadlinkatcwd function. A function was removed. Binaries that used this function would no longer work. diacrit This deprecated module is removed. A module with all its functions was removed. Binaries that used it would no longer work. read-file The functions provided by this module now take an 'int flags' argument to modify the file reading behavior. The read_binary_file function has been removed as it is no longer necessary. These are backward-incompatible changes on existing function names. fatal-signal The function that you pass to at_fatal_signal now takes the signal as argument. Likewise. You need to think about how you will handle these changes. Because if you don't handle these changes, you are stuck with a gnulib snapshot from 2023 for all times, and in the year 2030 it will be useless to ship seven years old code. Bruno
