Hi Yann,

FWIW I've found a very good explanation of what's going on during linking and why the library order in static linking is so important.
https://eli.thegreenplace.net/2013/07/09/library-order-in-static-linking

On 05/24/2018 12:00 PM, Yann Ylavic wrote:
Looks like the right order to me, however it fails with shared modules
because "server/core.c" (in libmain) uses ap_set_etag() function from
"modules/http/http_etag.c" (in BUILTIN_LIBS's libmod_http).

This could indicate that the default_handler() function which calls ap_set_etag() should better be moved to some file in modules/http/. Of course that opens a totally different can of worms...

I think "core" shouldn't depend on a module (even builtin), for
instance ap_set_{last_modified,accept_range,content_length,...} also
used by the core are defined in "server/protocol.c".

WDYT?

Well, first things first. Let's first fix trunk to be buildable again on build systems that really only link the needed symbols and thus rely on the correct library order during linking.

Regards,
Micha

Reply via email to