On Wed, 2011-02-23 at 14:31 +0100, Corinna Vinschen wrote:
On Feb 23 14:11, Balazs Scheidler wrote:
On Wed, 2011-02-23 at 13:57 +0100, Corinna Vinschen wrote:
On Feb 23 13:05, Balazs Scheidler wrote:
Hi,
I've tried to put a closure on how syslog-ng 3.2 and above is being linked. There were numerous problems as it started to get into Linux distributions. [...] Also, the main syslog-ng executable is not linked against libssl/libcrypto on purpose, it is only used by the afsocket module (which implements the tcp/syslog destinations).
Could anyone who is in charge of maintaining syslog-ng binaries in various distributions give this a test so 3.2.3 will compile everywhere out-of-the-box?
Sorry, but this won't work for the Cygwin distro. The changes don't take my patch from https://lists.balabit.hu/pipermail/syslog-ng/2011-February/016007.html into account.
I understand that, but pdbtool doesn't open libdbparser.so anymore and libsyslog-ng-patterndb.so has been removed and I link that into pdbtool statically.
Rechecking the patch you referenced, the only important difference is that you mark the convenience library with noinst_ whereas my patch installs that publicly (which indeed is a bug).
Am I missing something else?
Well, yes. As outlined in https://lists.balabit.hu/pipermail/syslog-ng/2011-February/016006.html there are two problems:
- You can't link against a static lib when creating a shared lib. That means, creating libdbparser.so will fail. My patch results in creating a shared libsyslog-ng-patterndb.so for linking libdbparser.so, and a static libsyslog-ng-patterndb.a for linking pdbtool. Marking both libsyslog-ng-patterndb as noinst is just to avoid that both convenience libs are installed.
hmm.. not even with -fPIC ? If I have to duplicate executable code into pdbtool anyway (because of static linking it), I'd rather not have a separate .so which is only loaded by an .so. If that's the case, I'd include the same source files into both targets (the .la one and pdbtool one)
- The link order is important when creating binaries on the Windows platform. Since libsyslog-ng-patterndb.a reference symbols in ../../lib/libsyslog-ng.la, you must reorder them on the command line. Not
../../lib/libsyslog-ng.la libsyslog-ng-patterndb.a
but
libsyslog-ng-patterndb.a ../../lib/libsyslog-ng.la
Ok, I've missed that, and changed my Makefile.
My patch fixes both problems. The result should work on all platforms.
Thanks for your efforts, and sorry for missing the point. Hopefully we can close this once and for all :) -- Bazsi