radvd is linked with libfl provided by flex # i586-alix-linux-uclibc-emerge -vat radvd i586-alix-linux-uclibc-gcc -Os -pipe -march=geode -mmmx -m3dnow -fomit-frame-pointer -I/usr/i586-alix-linux-uclibc/usr/include/ -I/usr/i586-alix-linux-uclibc/include/ -Wall -Wpointer-arith -Wcast-qual -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -L/usr/i586-alix-linux-uclibc/lib -L/usr/i586-alix-linux-uclibc/usr/lib -o radvd log.o socket.o recv.o util.o radvd.o timer.o send.o process.o interface.o device.o device-common.o privsep.o gram.o scanner.o -lfl -lc /usr/libexec/gcc/i586-alix-linux-uclibc/ld: cannot find -lfl collect2: ld returned 1 exit status make[1]: *** [radvd] Error 1 make[1]: Leaving directory `/var/tmp/i586-alix-linux-uclibc/portage/net-misc/radvd-1.6/work/radvd-1.6' make: *** [all] Error 2 emake failed Reproducible: Always
Missing to tell how to fix it without modifying ebuild : i586-alix-linux-uclibc-emerge -vat flex radvd
Please add full build log next time _as attachment_ . TIA
Created attachment 281353 [details] net-misc:radvd-1.6:20110728-200026.log
Hello, first, qlist flex lists /usr/lib64/libfl.a and no .so, -lfl gets linked into radvd on a static way. Well glibc ist linked dynamic. io xterm # scanelf -n /usr/sbin/radvd TYPE NEEDED FILE ET_EXEC libc.so.6 /usr/sbin/radvd the question is, why does your system lack the /usr/lib64/libfl.a file. Can you please comment the output of `emerge -pv sys-devel/flex`? Thanks
(In reply to comment #4) > Hello, > > first, qlist flex lists /usr/lib64/libfl.a and no .so, -lfl gets linked into > radvd on a static way. Well glibc ist linked dynamic. > > io xterm # scanelf -n /usr/sbin/radvd > TYPE NEEDED FILE > ET_EXEC libc.so.6 /usr/sbin/radvd > > the question is, why does your system lack the /usr/lib64/libfl.a file. System lack /usr/lib64/libfl.a as this file is provided by flex and flex is not a dependency of any installed package. This is a cross-compilation matter : # scanelf -n /usr/i586-alix-linux-uclibc/usr/sbin/radvd TYPE NEEDED FILE ET_EXEC libc.so.0,libgcc_s.so.1 /usr/i586-alix-linux-uclibc/usr/sbin/radvd > Can you please comment the output of `emerge -pv sys-devel/flex`? # i586-alix-linux-uclibc-emerge -pv flex Calculating dependencies... done! [ebuild R ] sys-devel/flex-2.5.35 to /usr/i586-alix-linux-uclibc/ USE="-nls -static" 0 kB
Ok, libfl.la is copied into radvd during compile time and flex is a build time dep on versions 1.6, 1.7 and 1.8. I don't know why your configure detects flex but not -lfl. Flex is pulled before radvd on a regular amd64 system. Your point with the RDEPEND is invalid, since flex is no runtime dependency for radvd. Please figure out which flex binary your radvd/configure script detects and why it doesn't detect the corresponding -lfl file.
> I don't know why your configure detects flex but not -lfl. > > Your point with the RDEPEND is invalid, since flex is no runtime dependency for > radvd. When ROOT is modified, RDEPEND also define what should be installed in ROOT, while DEPEND define what should be install in ROOT=/ This is why I precised RDEPEND. But anyway, configure is bad as it's detected as present. > Please figure out which flex binary your radvd/configure script detects and why > it doesn't detect the corresponding -lfl file. Will do this later in the day.
> > Please figure out which flex binary your radvd/configure script detects and why > > it doesn't detect the corresponding -lfl file. > > Will do this later in the day. This is detected as host flex is checked in $PATH : AC_PROG_YACC Then a link test is done AM_PROG_LEX And no action is taken if not found : checking for yywrap in -lfl... no checking for yywrap in -ll... no checking lex output file root... lex.yy checking whether yytext is a pointer... no
fixed