hlfs 5.8 multiple definition of `fixstrtod' when compiling tcl-8.4.12

Aaron Miller armantic101 at gmail.com
Sun Jun 18 10:56:39 PDT 2006


Sorry, I just realized that HLFS has it's own thread. I apologize for
my ignorance.

I went ahead and used the fix and tcl compiled without errors.
Hopefully I will not
see any adverse effects down the road.

regards,
...aaron

On 6/15/06, Aaron Miller <armantic101 at gmail.com> wrote:
> On 6/14/06, Aaron Miller <armantic101 at gmail.com> wrote:
> > Hello, Thanks for taking the time to read this.
> >
> > I am stuck on Chapter 5.8 in  Hardened Linux From Scratch - Version SVN-20060510
> > When I try to compile tcl-8.4.12 I get the following error:
> >
> > fixstrtod.o: In function `fixstrtod':
> > fixstrtod.c:(.text+0x0): multiple definition of `fixstrtod'
> > strtod.o:strtod.c:(.text+0x0): first defined here
> > /mnt/hlfs/root/bin/../lib/gcc/i686-tools-linux-gnu/3.4.5/../../../../i686-tools-linux-gnu/bin/ld:
> > Warning: size of symbol `fixstrtod' changed from 669 in strtod.o to 77
> > in fixstrtod.o
> > collect2: ld returned 1 exit status
> > make: *** [libtcl8.4.so] Error 1
> >
> > The only post I found that had a similar error was this one:
> > http://linuxfromscratch.org/pipermail/lfs-support/2003-October/019905.html
> > But it looks like it was as a result of using env variable in the spec
> > file maybe?
> >
> > fgrep 'linker /tools/lib' /tools/lib/gcc/i686-tools-linux-gnu/3.4.5/specs
> >
> > %{!static:--eh-frame-hdr} -m elf_i386 %{shared:-shared}   %{!shared:
> >  %{!ibcs:       %{!static:         %{rdynamic:-export-dynamic}
> > %{!dynamic-linker:-dynamic-linker /tools/lib/ld-linux.so.2}}
> > %{static:-static}}}
> >
> > echo 'main(){}' | ${target}-gcc -x c -
> > readelf -l a.out | grep ': /tools'
> >
> >       [Requesting program interpreter: /tools/lib/ld-linux.so.2]
> >
> > Also, please note the following:
> >
> > ls -l /
> > ...
> > tools -> /mnt/hlfs/tools
> > ...
> >
> > ls -l /mnt/hlfs
> > ...
> > root
> > tools -> /mnt/hlfs/root/
> >
> > So my "tools" directory will actually be /root when I am finished. I
> > don't see how this
> > could relate to the error but though I should include it anyways. I
> > also tried to see
> > if I might have made a mistake somewhere, but I got the same error the second
> > time though (I copied and pasted all the commands to be sure I got it right).
> >
> > Sorry if this has been addressed before, I am still kind of new to Linux so my
> > searching skills are still not up to par. What I found on google
> > indicated that there is
> > a known problem while cross compiling tcl and gave some possible
> > fixes, but I don't
> > know a lot about Linux yet and wanted to see if this is being caused by deeper
> > problem.
> >
> > Thanks for your time!
> > ...aaron
> >
>
>
> Hello, sorry to reply to my own message, but I just wanted to say that
> I tried it again without the links pointing to the "$HLFS/root"
> partition, so everything is by the book and and I still get the same
> error with tcl.
>
> I found this information on google in regards to cross compiling tcl.
> Will following these instructions have an adverse effect on my hlfs
> system?
>
> ------------------------
> comp.lang.tcl archive
> Re: multiple definition of `fixstrtod' while cross-compiling tcl
>
> From: Eric Hassold <hassold at evolane.fr>
> Date: Mon Dec 05 2005 - 22:33:38 CET
>
> Tcl configure script makes some pessimistic assumptions when
> cross-compiling (when AC_TRY_RUN can't run). One of them is guessing
> libc has no strtod when small test program can't be run. Some AC_TRY_RUN
> should actually be replaced by AC_TRY_LINK to provide better estimate.
>
> Anyway, as a work-around, you may force configure detection, defining
>    export ac_cv_func_strtod=yes
> before running ./configure. You may also have to force
>    export tcl_cv_strtod_buggy=1
> so that Tcl will define its own fixstrtod() symbol, which will call
> uclibc's strtod(). Works fine in our nightly built process, compiling
> Tcl for arm-linux/uclibc.
>
> Eric Hassold
> ------------------------
>
> Also, I had a question about starting with a clean environment. Does
> it clear out all environment variables or just the user defined ones?
> I noticed if I do the following in my supposedly clean hlfs
> environment:
>
> $H{tab}{tab}
>
> I get a list of already defined variables that begin with 'H'
>
> $HISTCMD       $HISTFILESIZE  $HLFS          $HOSTNAME
> $HISTFILE      $HISTSIZE      $HOME          $HOSTTYPE
>
> Do I not have a clean environment? If I run 'exec env -i' I get this
> when I try the same thing:
> $HISTCMD       $HISTFILE      $HISTFILESIZE  $HISTSIZE
> $HOME          $HOSTNAME      $HOSTTYPE
>
>
> Is there an environment variable leaking into my tcl? If so, how can I
> make sure they are all cleared out?
>
> Thanks again for your time!
> ...aaron
>



More information about the lfs-support mailing list