Hi Lide,

In the Makefile, the definition of FFLAGS should be :

FFLAGS = -I/opt/zlib-1.2.3/include (the I in -I must be a capital "i",
not a lowercase "l")

please try with that change.

Regards,

Jesus



2010/1/7 Lide Duan <[email protected]>:
> Hi Jesus,
>
> Sorry to bother again, I did what you suggested, but looks like the linker
> cannot find the zlib include directory:
>
> /opt/crosstool/gcc-2.95.3-glibc-2.2.5/i686-unknown-linux-gnu/bin/i686-unknown-linux-gnu-gcc
> -l/opt/zlib-1.2.3/include -o sysprobe sysprobe.c
> /opt/crosstool/gcc-2.95.3-glibc-2.2.5/i686-unknown-linux-gnu/i686-unknown-linux-gnu/bin/ld:
> cannot find -l/opt/zlib-1.2.3/include
> collect2: ld returned 1 exit status
>
> Let me show some details of my system, just in case I am not missing
> anything else:
> 1. I installed zlib in /opt/zlib-1.2.3
> $ls /opt/zlib-1.2.3/*
> /opt/zlib-1.2.3/include:
> zconf.h  zlib.h
>
> /opt/zlib-1.2.3/lib:
> libz.a
>
> /opt/zlib-1.2.3/share:
> man
>
> 2. In my crosstool built gcc directory:
> $ls /opt/crosstool/gcc-2.95.3-glibc-2.2.5/i686-unknown-linux-gnu/bin/*
> /opt/crosstool/gcc-2.95.3-glibc-2.2.5/i686-unknown-linux-gnu/bin/cpp
> /opt/crosstool/gcc-2.95.3-glibc-2.2.5/i686-unknown-linux-gnu/bin/gcov
> /opt/crosstool/gcc-2.95.3-glibc-2.2.5/i686-unknown-linux-gnu/bin/i686-unknown-linux-gnu-addr2line
> /opt/crosstool/gcc-2.95.3-glibc-2.2.5/i686-unknown-linux-gnu/bin/i686-unknown-linux-gnu-ar
> /opt/crosstool/gcc-2.95.3-glibc-2.2.5/i686-unknown-linux-gnu/bin/i686-unknown-linux-gnu-as
> /opt/crosstool/gcc-2.95.3-glibc-2.2.5/i686-unknown-linux-gnu/bin/i686-unknown-linux-gnu-c++
> /opt/crosstool/gcc-2.95.3-glibc-2.2.5/i686-unknown-linux-gnu/bin/i686-unknown-linux-gnu-c++filt
> /opt/crosstool/gcc-2.95.3-glibc-2.2.5/i686-unknown-linux-gnu/bin/i686-unknown-linux-gnu-g++
> /opt/crosstool/gcc-2.95.3-glibc-2.2.5/i686-unknown-linux-gnu/bin/i686-unknown-linux-gnu-gcc
> /opt/crosstool/gcc-2.95.3-glibc-2.2.5/i686-unknown-linux-gnu/bin/i686-unknown-linux-gnu-gprof
> /opt/crosstool/gcc-2.95.3-glibc-2.2.5/i686-unknown-linux-gnu/bin/i686-unknown-linux-gnu-ld
> /opt/crosstool/gcc-2.95.3-glibc-2.2.5/i686-unknown-linux-gnu/bin/i686-unknown-linux-gnu-nm
> /opt/crosstool/gcc-2.95.3-glibc-2.2.5/i686-unknown-linux-gnu/bin/i686-unknown-linux-gnu-objcopy
> /opt/crosstool/gcc-2.95.3-glibc-2.2.5/i686-unknown-linux-gnu/bin/i686-unknown-linux-gnu-objdump
> /opt/crosstool/gcc-2.95.3-glibc-2.2.5/i686-unknown-linux-gnu/bin/i686-unknown-linux-gnu-protoize
> /opt/crosstool/gcc-2.95.3-glibc-2.2.5/i686-unknown-linux-gnu/bin/i686-unknown-linux-gnu-ranlib
> /opt/crosstool/gcc-2.95.3-glibc-2.2.5/i686-unknown-linux-gnu/bin/i686-unknown-linux-gnu-readelf
> /opt/crosstool/gcc-2.95.3-glibc-2.2.5/i686-unknown-linux-gnu/bin/i686-unknown-linux-gnu-size
> /opt/crosstool/gcc-2.95.3-glibc-2.2.5/i686-unknown-linux-gnu/bin/i686-unknown-linux-gnu-strings
> /opt/crosstool/gcc-2.95.3-glibc-2.2.5/i686-unknown-linux-gnu/bin/i686-unknown-linux-gnu-strip
> /opt/crosstool/gcc-2.95.3-glibc-2.2.5/i686-unknown-linux-gnu/bin/i686-unknown-linux-gnu-unprotoize
>
> Note that in the above directory, there is no "ld" but a
> "i686-unknown-linux-gnu-ld", but the error message always points to
> /opt/crosstool/.../bin/ld. Does it matter?
>
> 3. I will also send my Makefile to you.
>
> Thanks,
> Lide
>
> 2010/1/7 Jesus Hernandez Tapia <[email protected]>
>>
>> Hi Lide,
>>
>> I was able to reproduce the problem and I think I got a solution:
>>
>> 1) The linker being used by default by the crosstool built gcc is the
>> correct one. so no change here.
>>
>> 2) Build zlib with the crosstool built gcc and glibc:
>>
>> 2a) download the zlib source code from here:
>> http://www.zlib.net/zlib-1.2.3.tar.gz
>>
>> 2b) extract it, configure it and build it as follows:
>>
>> $
>> CC=/opt/crosstool/gcc-2.95.3-glibc-2.2.5/i686-unknown-linux-gnu/bin/i686-unknown-linux-gnu-gcc
>> ./configure --prefix=<Path to zlib>
>>
>> $ make
>> $make install
>>
>> 3) Search for and modify the following environment variables in the
>> TurboSMARTS makefile:
>>
>> MLIBS  = `./sysprobe -libs` -L<path to zlib>/lib -lm -lz
>>
>> FFLAGS = -I<Path to zlib>/include  (May not be the best place to set
>> the include directory though, but lets try it for now)
>>
>>
>> 4) Rebuild TurboSMARTS
>>
>>
>> I hope this works well for you.
>>
>> Regards,
>>
>> Jesus
>>
>> 2010/1/6 Lide Duan <[email protected]>:
>> > Jesus,
>> >
>> > First of all, as you suggested, I added -L/usr/lib into the makefile.
>> > Here
>> > is what is shown:
>> >
>> >
>> > /opt/crosstool/gcc-2.95.3-glibc-2.2.5/i686-unknown-linux-gnu/i686-unknown-linux-gnu/bin/ld:/usr/lib/libc.so:
>> > file format not recognized; treating as linker script
>> >
>> > /opt/crosstool/gcc-2.95.3-glibc-2.2.5/i686-unknown-linux-gnu/i686-unknown-linux-gnu/bin/ld:/usr/lib/libc.so:5:
>> > parse error
>> > collect2: ld returned 1 exit status
>> >
>> > I also noticed that there is no "ld" in the above directory (i.e.
>> > /opt/crosstool/.../bin), which only contains a
>> > "i686-unknown-linux-gnu-ld".
>> > "ld" is in /usr/bin. I suspect that I used a wrong linker? How can I
>> > tell
>> > gcc to use /usr/bin/ld?
>> >
>> > The followings are the related content from my Makefile:
>> >
>> > CC =
>> >
>> > /opt/crosstool/gcc-2.95.3-glibc-2.2.5/i686-unknown-linux-gnu/bin/i686-unknown-linux-gnu-gcc
>> > CXX =
>> >
>> > /opt/crosstool/gcc-2.95.3-glibc-2.2.5/i686-unknown-linux-gnu/bin/i686-unknown-linux-gnu-g++
>> > OFLAGS = -O3 -Wall
>> > MFLAGS = `./sysprobe -flags`
>> > MLIBS  = `./sysprobe -libs` -L/usr/lib -lm -lz
>> > ENDIAN = `./sysprobe -s`
>> > MAKE = make
>> > AR = ar qcv
>> > AROPT =
>> > RANLIB = ranlib
>> > RM = rm -f
>> > RMDIR = rm -f
>> > LN = ln -s
>> > LNDIR = ln -s
>> > DIFF = diff
>> > OEXT = o
>> > LEXT = a
>> > EEXT =
>> > CS = ;
>> > X=/
>> >
>> >
>> > Thank you very much!!
>> > Lide
>> >
>> > 2010/1/6 Jesus Hernandez Tapia <[email protected]>
>> >>
>> >> Lide,
>> >>
>> >> One more thing I noticed is that you are using
>> >>
>> >>
>> >> /opt/crosstool/gcc-2.95.3-glibc-2.2.5/i686-unknown-linux-gnu/i686-unknown-linux-gnu/bin/ld
>> >> , and it should be /usr/bin/ld.
>> >>
>> >> Could you please insert the part of the Makefile where you define the
>> >> environment variables for your build?, then I can take a look to it.
>> >>
>> >> Jesus
>> >>
>> >> 2010/1/6 Jesus Hernandez Tapia <[email protected]>:
>> >> > Hi Lide,
>> >> >
>> >> > I would like to suggest one more thing:
>> >> >
>> >> > Please find in the Makefile the following line:
>> >> >
>> >> > MLIBS  = `./sysprobe -libs` -lm -lz
>> >> >
>> >> > and change it to :
>> >> >
>> >> > MLIBS  = `./sysprobe -libs` -L/usr/lib -lm -lz
>> >> >
>> >> > Rebuild the application after the change to Makefile
>> >> >
>> >> > Regards,
>> >> >
>> >> > Jesus
>> >> >
>> >> > 2010/1/6 Lide Duan <[email protected]>:
>> >> >> Yes, they are there...I found both files in /usr/lib. Actually,
>> >> >> other
>> >> >> gcc
>> >> >> versions I tried seemed to link correctly although they could not
>> >> >> compile
>> >> >> successfully at the end. I have no idea why the crosstool built gcc
>> >> >> cannot
>> >> >> link to zlib...
>> >> >>
>> >> >> 2010/1/6 Jesus Hernandez Tapia <[email protected]>
>> >> >>>
>> >> >>> Lida,
>> >> >>>
>> >> >>> Do you have the library files installed in your system? Please
>> >> >>> search
>> >> >>> for libz in /usr/lib. There should be files like libz.so and
>> >> >>> libz.a.
>> >> >>>
>> >> >>> If the library is not there, you may need to install it.
>> >> >>>
>> >> >>> Regards,
>> >> >>>
>> >> >>> Jesus
>> >> >>>
>> >> >>>
>> >> >>>
>> >> >>> 2010/1/6 Lide Duan <[email protected]>:
>> >> >>> > Hi Jesus,
>> >> >>> >
>> >> >>> > I think I successfully used the crosstool to build gcc-2.95.3 and
>> >> >>> > glibc-2.2.5, as you suggested. But when I compiled SMARTS with
>> >> >>> > the
>> >> >>> > new
>> >> >>> > installed gcc, it gave me the following error:
>> >> >>> >
>> >> >>> >
>> >> >>> >
>> >> >>> >
>> >> >>> > /opt/crosstool/gcc-2.95.3-glibc-2.2.5/i686-unknown-linux-gnu/i686-unknown-linux-gnu/bin/ld:
>> >> >>> > cannot find -lz
>> >> >>> > collect2: ld returned 1 exit status
>> >> >>> >
>> >> >>> > Looks like the linker cannot link to zlib? Do you have any idea
>> >> >>> > about
>> >> >>> > this?
>> >> >>> > Thank you!
>> >> >>> >
>> >> >>> > Lide
>> >> >>> >
>> >> >>> > 2010/1/6 Jesus Hernandez Tapia <[email protected]>
>> >> >>> >>
>> >> >>> >> Lide,
>> >> >>> >>
>> >> >>> >> If I remember correctly I used glibc version 2.2.5.
>> >> >>> >> Please let us know if this version works for you.
>> >> >>> >>
>> >> >>> >> Regards,
>> >> >>> >>
>> >> >>> >> Jesus
>> >> >>> >>
>> >> >>> >> 2010/1/6 Lide Duan <[email protected]>:
>> >> >>> >> > Hi Jesus,
>> >> >>> >> >
>> >> >>> >> > Thank you for your reply! I suspect that the error I
>> >> >>> >> > encountered
>> >> >>> >> > is
>> >> >>> >> > due
>> >> >>> >> > to
>> >> >>> >> > the glibc version. The current one in my machine is 2.5, but I
>> >> >>> >> > believe
>> >> >>> >> > gcc
>> >> >>> >> > 2.95.3 used an older version. Could you please tell me the
>> >> >>> >> > glibc
>> >> >>> >> > version
>> >> >>> >> > you
>> >> >>> >> > used with gcc 2.95.3 to compile SMARTS? (Is it something
>> >> >>> >> > 2.3.x?)
>> >> >>> >> >
>> >> >>> >> > Thanks,
>> >> >>> >> > Lide
>> >> >>> >> >
>> >> >>> >> > 2010/1/6 Jesus Hernandez Tapia <[email protected]>
>> >> >>> >> >>
>> >> >>> >> >> Hi Lide,
>> >> >>> >> >>
>> >> >>> >> >> You are right, to compile SMARTS you need gcc version 2.95.3.
>> >> >>> >> >>
>> >> >>> >> >> It has been a long time since I did this, but I remember I
>> >> >>> >> >> used
>> >> >>> >> >> "crosstool" to install the required version of GCC along with
>> >> >>> >> >> its
>> >> >>> >> >> corresponding version of glibc. After this, SMARTS compiled
>> >> >>> >> >> with
>> >> >>> >> >> no
>> >> >>> >> >> problems.
>> >> >>> >> >>
>> >> >>> >> >> Here is the link to crosstool:
>> >> >>> >> >> http://www.kegel.com/crosstool/
>> >> >>> >> >>
>> >> >>> >> >> Regards.
>> >> >>> >> >>
>> >> >>> >> >> 2010/1/5 Lide Duan <[email protected]>:
>> >> >>> >> >> > Thank you for the info, Zhibin!
>> >> >>> >> >> >
>> >> >>> >> >> > Are you sure it is 2.9.53 but not 2.95.3? Since 2.95.3 is
>> >> >>> >> >> > the
>> >> >>> >> >> > gcc
>> >> >>> >> >> > 2.9x
>> >> >>> >> >> > version I can find on GNU website. I could not find any GCC
>> >> >>> >> >> > version
>> >> >>> >> >> > as
>> >> >>> >> >> > 2.9.53. (If it turns out to be 2.9.53, is there anyway for
>> >> >>> >> >> > me
>> >> >>> >> >> > to
>> >> >>> >> >> > download
>> >> >>> >> >> > it?)
>> >> >>> >> >> >
>> >> >>> >> >> > Unfortunately, gcc 2.95.3 still gave me the same error...Is
>> >> >>> >> >> > there
>> >> >>> >> >> > any
>> >> >>> >> >> > known
>> >> >>> >> >> > gcc version that is for sure compatible with TurboSMARTS?
>> >> >>> >> >> >
>> >> >>> >> >> > Thanks,
>> >> >>> >> >> > Lide
>> >> >>> >> >> >
>> >> >>> >> >> > 2010/1/5 yuzhibin <[email protected]>
>> >> >>> >> >> >>
>> >> >>> >> >> >> Hi
>> >> >>> >> >> >>
>> >> >>> >> >> >>    You need to use gcc 2.9.53 to compile the TurboSMARTS.
>> >> >>> >> >> >> Good
>> >> >>> >> >> >> luck!
>> >> >>> >> >> >>
>> >> >>> >> >> >>
>> >> >>> >> >> >>
>> >> >>> >> >> >> Best regards,
>> >> >>> >> >> >>
>> >> >>> >> >> >> Zhibin
>> >> >>> >> >> >>
>> >> >>> >> >> >>
>> >> >>> >> >> >>
>> >> >>> >> >> >> ________________________________
>> >> >>> >> >> >>
>> >> >>> >> >> >> 发件人: Lide Duan [mailto:[email protected]]
>> >> >>> >> >> >> 发送时间: Tuesday, January 05, 2010 8:35 AM
>> >> >>> >> >> >> 收件人: [email protected]
>> >> >>> >> >> >> 主题: What was the gcc/g++ version used to build
>> >> >>> >> >> >> TurboSMARTS?
>> >> >>> >> >> >>
>> >> >>> >> >> >>
>> >> >>> >> >> >>
>> >> >>> >> >> >> Hello,
>> >> >>> >> >> >>
>> >> >>> >> >> >> I am trying to compile the TurboSMARTS codebase on Suse
>> >> >>> >> >> >> Linux
>> >> >>> >> >> >> 10.2.
>> >> >>> >> >> >> I
>> >> >>> >> >> >> tried two versions of gcc/g++: 3.4.1 and 4.1.2, but they
>> >> >>> >> >> >> all
>> >> >>> >> >> >> gave
>> >> >>> >> >> >> the
>> >> >>> >> >> >> following errors:
>> >> >>> >> >> >>
>> >> >>> >> >> >> /usr/bin/ld: errno: TLS definition in /lib/libc.so.6
>> >> >>> >> >> >> section
>> >> >>> >> >> >> .tbss
>> >> >>> >> >> >> mismatches non-TLS reference in eval.o
>> >> >>> >> >> >> /lib/libc.so.6: could not read symbols: Bad value
>> >> >>> >> >> >> collect2: ld returned 1 exit status
>> >> >>> >> >> >>
>> >> >>> >> >> >> Any idea about this? Could anyone tell me the exact
>> >> >>> >> >> >> version
>> >> >>> >> >> >> used
>> >> >>> >> >> >> to
>> >> >>> >> >> >> compile TurboSMARTS?
>> >> >>> >> >> >>
>> >> >>> >> >> >> Thanks,
>> >> >>> >> >> >> Lide
>> >> >>> >> >> >
>> >> >>> >> >
>> >> >>> >> >
>> >> >>> >
>> >> >>> >
>> >> >>
>> >> >>
>> >> >
>> >
>> >
>
>

Reply via email to