Undefined symbol: yylex, 3.1beta1
I decided to try to at least build the 3.1beta1 package, to be sure that there were no new "compilation oddities" introduced. It seems to have fallen over while trying to compile the pdbtool component: gcc -DHAVE_CONFIG_H -I. -I.. -I/usr/local/include/glib-2.0 -I/usr/local/lib/glib-2.0/include -I/usr/local/include/eventlog -I/usr/local/ssl/include -DLIBNET_LIL_ENDIAN -D_GNU_SOURCE -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -g -O2 -Wall -MT pdbtool.o -MD -MP -MF .deps/pdbtool.Tpo -c -o pdbtool.o pdbtool.c mv -f .deps/pdbtool.Tpo .deps/pdbtool.Po gcc -g -O2 -Wall -o pdbtool pdbtool.o libsyslog-ng.a -lpthread -ldoor -lsocket -lrt -lnsl -lfl -L/usr/local/lib -lglib-2.0 -L/usr/local/lib -levtlog -L/usr/local/ssl/lib -lssl -lcrypto -lsocket -lnsl -ldl -lz -lsocket -lnsl -lnet -lresolv -lpthread Undefined first referenced symbol in file yylex /usr/sfw/lib/gcc/i386-pc-solaris2.10/3.4.3/../../../libfl.so ld: fatal: Symbol referencing errors. No output written to pdbtool collect2: ld returned 1 exit status *** Error code 1 make: Fatal error: Command failed for target `pdbtool' Current working directory /var/opt/packages/syslog-ng-3.1beta1/src *** Error code 1 The following command caused the error: failcom='exit 1'; \ for f in x $MAKEFLAGS; do \ case $f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo all-recursive | sed s/-recursive//`; \ list='src tests doc contrib debian tgz2build'; for subdir in $list; do \ echo "Making $target in $subdir"; \ if test "$subdir" = "."; then \ dot_seen=yes; \ local_target="$target-am"; \ else \ local_target="$target"; \ fi; \ (CDPATH="${ZSH_VERSION+.}:" && cd $subdir && make $local_target) \ || eval $failcom; \ done; \ if test "$dot_seen" = "no"; then \ make "$target-am" || exit 1; \ fi; test -z "$fail" make: Fatal error: Command failed for target `all-recursive' Current working directory /var/opt/packages/syslog-ng-3.1beta1 *** Error code 1 make: Fatal error: Command failed for target `all' Note that I just built 3.0.5 (today, as well), with no problems at all. I'm not done googling, but at least one site, seems to indicate that this might be a make-related issue: http://mail.opensolaris.org/pipermail/tools-gcc/2006-May/000121.html This is Solaris 10 x86, running the original (albeit patched) gcc/make components. Here's the summary from the configure that preceded the make activities: syslog-ng Open Source Edition 3.1beta1 configured Compiler options: compiler : gcc compiler options : -g -O2 -Wall -I/usr/local/include/glib-2.0 -I/usr/local/lib/glib-2.0/include -I/usr/local/include/eventlog -I/usr/local/ssl/include -DLIBNET_LIL_ENDIAN -D_GNU_SOURCE -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 linker flags : -lpthread prefix : /usr/local linking mode : dynamic Features: Sun STREAMS support : yes Sun Door support : yes Debug symbols : no GCC profiling : no Memtrace : no IPV6 support : yes spoof-source support : yes tcp-wrapper support : no SSL support : yes SQL support : no Linux capability support : no PCRE support : no Env wrapper support : no Not dying (or needing) to get 3.1 running. Just submitting this to try to sort out any compilation problems while this is all still in beta. APOLOGIES (in advance) if I've just done something moronically stupid! Let me know if there's some other input that it would be useful to provide, and/or if you have any thoughts/suggestions as to what might be happening. THANKS! Marvin This e-mail may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error) please notify the sender immediately and destroy this e-mail. Any unauthorized copying, disclosure or distribution of the material in this e-mail is strictly forbidden.
On Thu, 2009-12-10 at 14:12 -0600, Marvin Nipper wrote:
I decided to try to at least build the 3.1beta1 package, to be sure that there were no new “compilation oddities” introduced. It seems to have fallen over while trying to compile the pdbtool component:
gcc -DHAVE_CONFIG_H -I. -I.. -I/usr/local/include/glib-2.0 -I/usr/local/lib/glib-2.0/include -I/usr/local/include/eventlog -I/usr/local/ssl/include -DLIBNET_LIL_ENDIAN -D_GNU_SOURCE -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -g -O2 -Wall -MT pdbtool.o -MD -MP -MF .deps/pdbtool.Tpo -c -o pdbtool.o pdbtool.c mv -f .deps/pdbtool.Tpo .deps/pdbtool.Po gcc -g -O2 -Wall -o pdbtool pdbtool.o libsyslog-ng.a -lpthread -ldoor -lsocket -lrt -lnsl -lfl -L/usr/local/lib -lglib-2.0 -L/usr/local/lib -levtlog -L/usr/local/ssl/lib -lssl -lcrypto -lsocket -lnsl -ldl -lz -lsocket -lnsl -lnet -lresolv -lpthread Undefined first referenced symbol in file yylex /usr/sfw/lib/gcc/i386-pc-solaris2.10/3.4.3/../../../libfl.so ld: fatal: Symbol referencing errors. No output written to pdbtool collect2: ld returned 1 exit status *** Error code 1 make: Fatal error: Command failed for target `pdbtool' Current working directory /var/opt/packages/syslog-ng-3.1beta1/src *** Error code 1 The following command caused the error: failcom='exit 1'; \ for f in x $MAKEFLAGS; do \ case $f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo all-recursive | sed s/-recursive//`; \ list='src tests doc contrib debian tgz2build'; for subdir in $list; do \ echo "Making $target in $subdir"; \ if test "$subdir" = "."; then \ dot_seen=yes; \ local_target="$target-am"; \ else \ local_target="$target"; \ fi; \ (CDPATH="${ZSH_VERSION+.}:" && cd $subdir && make $local_target) \ || eval $failcom; \ done; \ if test "$dot_seen" = "no"; then \ make "$target-am" || exit 1; \ fi; test -z "$fail" make: Fatal error: Command failed for target `all-recursive' Current working directory /var/opt/packages/syslog-ng-3.1beta1 *** Error code 1 make: Fatal error: Command failed for target `all'
Note that I just built 3.0.5 (today, as well), with no problems at all.
I’m not done googling, but at least one site, seems to indicate that this might be a make-related issue: http://mail.opensolaris.org/pipermail/tools-gcc/2006-May/000121.html
This is Solaris 10 x86, running the original (albeit patched) gcc/make components.
Here’s the summary from the configure that preceded the make activities: syslog-ng Open Source Edition 3.1beta1 configured Compiler options: compiler : gcc compiler options : -g -O2 -Wall -I/usr/local/include/glib-2.0 -I/usr/local/lib/glib-2.0/include -I/usr/local/include/eventlog -I/usr/local/ssl/include -DLIBNET_LIL_ENDIAN -D_GNU_SOURCE -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 linker flags : -lpthread prefix : /usr/local linking mode : dynamic Features: Sun STREAMS support : yes Sun Door support : yes Debug symbols : no GCC profiling : no Memtrace : no IPV6 support : yes spoof-source support : yes tcp-wrapper support : no SSL support : yes SQL support : no Linux capability support : no PCRE support : no Env wrapper support : no
Not dying (or needing) to get 3.1 running. Just submitting this to try to sort out any compilation problems while this is all still in beta.
APOLOGIES (in advance) if I’ve just done something moronically stupid!
Let me know if there’s some other input that it would be useful to provide, and/or if you have any thoughts/suggestions as to what might be happening.
Thanks for the report, it is really appreciated. The problem seems to be that pdbtool is linked against libfl, which requires an external yylex symbol. I've pushed this patch to solve this: commit 8c7349439344abef821426c7be6f41bcdc419088 Author: Balazs Scheidler <bazsi@balabit.hu> Date: Fri Dec 11 10:23:49 2009 +0100 pdbtool: only link against libs that are strictly necessary flex (more precisely -lfl) caused linking problems as that requires yylex() as a defined symbol, which pdbtool doesn't define. Make sure that we only link against the libs that are strictly necessary to avoid this. Reported-By: Marvin Nipper -- Bazsi
participants (2)
-
Balazs Scheidler
-
Marvin Nipper