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

Aaron Miller armantic101 at gmail.com
Thu Jun 15 21:12:59 PDT 2006

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

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


I get a list of already defined variables that begin with 'H'


Do I not have a clean environment? If I run 'exec env -i' I get this
when I try the same thing:

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!

More information about the lfs-support mailing list